Я начинаю выяснять, как обрабатывать JSON в MSSQL 2016+
Я просто создал таблицу, имеющую столбец ID (int) и JSON (nvarchar).
Здесьмои запросы, чтобы показать проблему:
Первый запрос просто возвращает результат реляционной таблицы, хорошо и как ожидалось.
SELECT * FROM WS_Test
-- Results:
1 { "name": "thomas" }
2 { "name": "peter" }
Второй запрос возвращает только столбец json, поскольку "JSON" создал мойMSSQL.
Не очень приятно, потому что он выводит содержимое столбца json в виде строки, а не как проанализированный JSON.
SELECT json FROM WS_Test FOR JSON PATH
-- Results:
[{"json":"{ \"name\": \"thomas\" }"},{"json":"{ \"name\": \"peter\" }"}]
Третий запрос дает мне две строки результата с содержимым столбца json в виде проанализированного JSON, хорошо.
SELECT JSON_QUERY(json, '$') as json FROM WS_Test
-- Results:
{ "name": "thomas" }
{ "name": "peter" }
Четвертый запрос дает мне содержимое столбца json как ОДИН (!) Объект JSON, отлично проанализированный.
SELECT JSON_QUERY(json, '$') as json FROM WS_Test FOR JSON PATH
-- Results:
[{"json":{ "name": "thomas" }},{"json":{ "name": "peter" }}]
НО: я не хочу иметь свойство "json", содержащее содержимое столбца json в каждом объекте массива примера четыре.Я просто хочу один массив, содержащий содержимое столбца, не меньше, не больше.Вот так:
[
{
"name": "peter"
},
{
"name": "thomas"
}
]
Как мне заархивировать это только с помощью T-SQL?Это вообще возможно?