SQL-запрос в данные Json - PullRequest
       9

SQL-запрос в данные Json

0 голосов
/ 24 сентября 2018

У меня есть таблица, в которой есть много столбцов.Один столбец имеет значение json, например

{
  "RequiredForCompany":1, 
  "RequiredOnScreen":0,
  "Editable":[],
  "Visible":[], 
  "Expression":{},
  "GroupFields":[142,156]
}

Я хочу запросить это значение json, выбрав другой столбец.Мой запрос как

SELECT 
    [Name],
    JSON_VALUE(FieldAttributes, '$.GroupFields') AS GroupFields
FROM 
    [std].[Field]

Но он возвращает ноль для групповых полей.Любой способ запросить это значение?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Наконец-то я получил решение с помощью @Zaynul Abadin Tuhin.Мой запрос

SELECT [Name], STUFF((SELECT ','+[Value] FROM 
  OPENJSON (FieldAttributes,'$.GroupFields') FOR XML PATH ('')),1,1,'') AS GroupFields
FROM [std].[Field]

Работает нормально.

0 голосов
/ 24 сентября 2018

ваш GroupFields (массив) является контейнером значений последовательности, поэтому вы должны выбрать, как показано ниже

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]
...