Получить данные в виде строк из массива внутри столбца JSON - PullRequest
0 голосов
/ 01 октября 2018

У меня есть таблица, в столбце которой 'Preference' хранятся строки JSON.

a) Я хотел бы получить type из companytype как строк .В моей попытке sqlfiddle я получаю пять строк, но в них нет данных.

SELECT z.[Type]
FROM FinPreferences p
CROSS APPLY OPENJSON(Preference,'$.companytype.type') WITH (
    [Type] INT
) z
WHERE PreferenceID=1

b) Как получить результаты в виде одной строки строка , т.е.

1,2,3,4,5

Это данные в столбце Preference

   {
    "companysize":{"min":0,"max":5},
    "distance":{"min":100,"max":200},
    "companytype":{"type":[1,2,3,4,5]},
    "budget":{"min":1000,"max":2000}
    }

Fiddleздесь

1 Ответ

0 голосов
/ 01 октября 2018

Либо удалите предложение WITH и используйте поле value для получения значений массива, например:

SELECT z.value as Type
FROM FinPreferences p
CROSS APPLY OPENJSON(Preference,'$.companytype.type') z
WHERE PreferenceID=1

Или используйте просто $ в качестве пути в предложении WITH:

SELECT z.Type
FROM FinPreferences p
CROSS APPLY OPENJSON(Preference,'$.companytype.type') 
            WITH ( Type int '$') z
WHERE PreferenceID=1

WITH применяется к результатам, возвращаемым OPENJSON .Путь $.companytype.type - это просто массив целых чисел, других атрибутов у него нет

...