Возврат объекта таблицы из сохраненного JSON в столбце - PullRequest
0 голосов
/ 26 июня 2019

Извините, я знаю, что об этом спрашивали миллиард раз, но я попытался собрать заявления CROSS APPLY без какой-либо удачи и нуждается в некоторой помощи.У меня есть эти данные в SQL в одном столбце, который я могу получить, выбрав столбец из таблицы, где id = blah:

[{"User": "Bob", "Domain": "DOMAIN"," Sid ":" S-1-5-21-3434343-3434343434-34343343434-242210 "}, {" Пользователь ":" adm-Bob "," Домен ":" ДОМЕН "," Сид ":" S-1-5-21-34343434-3434343434-3434334-242240 "}]

Как мне превратить его в таблицу с тремя столбцами и двумя ролями?Я могу сделать это, когда в JSON есть только одна запись, но я не могу понять, когда в JSON более одной учетной записи.

1 Ответ

2 голосов
/ 26 июня 2019

Не зная, что вы пытались, я не могу сказать вам, где вы ошиблись, но OPENJSON и WITH отлично работает здесь:

DECLARE @JSON nvarchar(MAX) = '[ { "User": "Bob", "Domain": "DOMAIN", "Sid": "S-1-5-21-3434343-3434343434-34343343434-242210" }, { "User": "adm-Bob", "Domain": "DOMAIN", "Sid": "S-1-5-21-34343434-3434343434-3434334-242240" } ]';

SELECT OJ.[User],
       OJ.Domain,
       OJ.[Sid]
FROM (VALUES(@JSON))V(JSON)
     CROSS APPLY OPENJSON(V.JSON) 
     WITH ([User] nvarchar(100) '$.User',
           Domain nvarchar(100) '$.Domain',
           [Sid] nvarchar(100) '$.Sid') OJ;

DB <> Fiddle

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