Преобразовать результат типа массива mssql openjson в таблицу? - PullRequest
3 голосов
/ 16 мая 2019

У меня есть объект json в моем запросе Microsoft (MS) SQL Server.Этот объект JSON имеет одно значение, которое представляет собой массив строк.

--this variable holds my JSON object with a value of array type. 
declare @json nvarchar(max) = N'{
                    "value": [
                        "tapiwanashe",
                        "robert",
                        "emmerson",
                        "ruwimbo",
                        "takudzwa",
                        "munyaradzi"
                    ]
                }'

Моя цель - написать SQL-запрос с использованием поддерживаемых функций JSON MS SQL Server, который создает таблицу с одним столбцом и шестью строками значений в массиве значений объекта JSON выше.

Я попытался запустить функции JSON_QUERY и OPENJSON.Однако обе эти функции возвращают массив строк в качестве вывода.Я хотел бы получить результат с одним столбцом и шестью строками.

select JSON_QUERY(@json, '$.value')
select [value] from OPENJSON(@json)

Результат, который я получаю:

value
---------------
[
   "tapiwanashe",
   "robert",
   "emmerson",
   "ruwimbo",
   "takudzwa",
   "munyaradzi"
]

Однако результат, который я ожидаю получить, выглядит следующим образом:

value
-----------
tapiwanashe
robert
emmerson
ruwimbo
takudzwa
munyaradzi

Результат должен сохранять порядок, в котором значения появляются в массиве значений.

1 Ответ

5 голосов
/ 16 мая 2019

Как это:

declare @json nvarchar(max) = N'{
                    "value": [
                        "tapiwanashe",
                        "robert",
                        "emmerson",
                        "ruwimbo",
                        "takudzwa",
                        "munyaradzi"
                    ]
                }'

select value 
from openjson(@json,'$.value')
order by [key]

выходы

value
----------
tapiwanashe
robert
emmerson
ruwimbo
takudzwa
munyaradzi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...