Разбор массива JSON в табличный формат в SQL Server - PullRequest
0 голосов
/ 14 октября 2019

У меня есть такой объект JSON

'{
    "car": [ "Ford", "BMW", "Fiat"],
    "car owner": ["Alex", "Tom", "Jane"]
}'

Мне нужно проанализировать его в табличном формате в SQL Server

Car   | Car owner
Ford    Alex
BMW     Tom
Fiat    Jane

Я пробовал

SELECT *
FROM OPENJSON(@json)
WITH (
  [Car] NVARCHAR(50) '$.Car[0]',
  [Car owner] NVARCHAR(50) '$."Car owner"[0]'
)

Возвращает первый элемент в массиве, но я не могу вернуть все записи только с '$.Car' и '$."Car owner"' в том же предложении WITH.

1 Ответ

3 голосов
/ 14 октября 2019

Самый простой способ, вероятно, состоит в том, чтобы открыть каждый массив в виде таблицы с отдельным вызовом OPENJSON и соединить их сгенерированным ключом для сопоставления позиций;

DECLARE @json NVARCHAR(MAX) = N'{
    "car": [ "Ford", "BMW", "Fiat"],
    "car owner": ["Alex", "Tom", "Jane"]
}'

SELECT a.value car, b.value owner
FROM OPENJSON(@json, '$.car') a
JOIN OPENJSON(@json, '$."car owner"') b
  ON a."key" = b."key"

Это даст результат;

car     owner
-------------
Ford    Alex
BMW     Tom
Fiat    Jane

DBfiddle для проверки с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...