SQL 查询 Json 数据
SQL Query into Json Data
我有一个 table,其中有很多列。一列有 json 个值,如
{
"RequiredForCompany":1,
"RequiredOnScreen":0,
"Editable":[],
"Visible":[],
"Expression":{},
"GroupFields":[142,156]
}
我想通过选择其他列来查询此 json 值。我的查询就像
SELECT
[Name],
JSON_VALUE(FieldAttributes, '$.GroupFields') AS GroupFields
FROM
[std].[Field]
但它 returns 对于组字段为空。有什么方法可以查询这个值?
您的 GroupFields(数组)是序列值容器,这就是为什么您必须 select 如下所示
DECLARE @jsonInfo1 NVARCHAR(MAX) =N'{
"RequiredForCompany":1,
"RequiredOnScreen":0,
"Editable":[],
"Visible":[],
"Expression":{},
"GroupFields":[142,156]
}';
select JSON_VALUE(@jsonInfo1, '$.GroupFields[0]') as g;
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=7eba8bf042a27253440ce4b41f440979
所以在你的情况下
SELECT [Name],
JSON_VALUE(FieldAttributes,'$.GroupFields[0]') AS GroupFields
FROM [std].[Field]
在@Zaynul Abadin Tuhin 的帮助下,我终于找到了解决方案。我的查询是
SELECT [Name], STUFF((SELECT ','+[Value] FROM
OPENJSON (FieldAttributes,'$.GroupFields') FOR XML PATH ('')),1,1,'') AS GroupFields
FROM [std].[Field]
一切正常。
我有一个 table,其中有很多列。一列有 json 个值,如
{
"RequiredForCompany":1,
"RequiredOnScreen":0,
"Editable":[],
"Visible":[],
"Expression":{},
"GroupFields":[142,156]
}
我想通过选择其他列来查询此 json 值。我的查询就像
SELECT
[Name],
JSON_VALUE(FieldAttributes, '$.GroupFields') AS GroupFields
FROM
[std].[Field]
但它 returns 对于组字段为空。有什么方法可以查询这个值?
您的 GroupFields(数组)是序列值容器,这就是为什么您必须 select 如下所示
DECLARE @jsonInfo1 NVARCHAR(MAX) =N'{
"RequiredForCompany":1,
"RequiredOnScreen":0,
"Editable":[],
"Visible":[],
"Expression":{},
"GroupFields":[142,156]
}';
select JSON_VALUE(@jsonInfo1, '$.GroupFields[0]') as g;
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=7eba8bf042a27253440ce4b41f440979
所以在你的情况下
SELECT [Name],
JSON_VALUE(FieldAttributes,'$.GroupFields[0]') AS GroupFields
FROM [std].[Field]
在@Zaynul Abadin Tuhin 的帮助下,我终于找到了解决方案。我的查询是
SELECT [Name], STUFF((SELECT ','+[Value] FROM
OPENJSON (FieldAttributes,'$.GroupFields') FOR XML PATH ('')),1,1,'') AS GroupFields
FROM [std].[Field]
一切正常。