很抱歉,我知道这个问题已经被询问了十亿次,但是我试图在没有任何运气的情况下将CROSS APPLY语句组合在一起,并且需要一些帮助。我在SQL的单个列中有此数据,我可以通过从表中的id = blah的select列中获得该数据:
[ { “用户”:“鲍勃”, “ Domain”:“ DOMAIN”, “ Sid”:“ S-1-5-21-3434343-3434343434-34343343434-242210” }, { “用户”:“ adm-Bob”, “ Domain”:“ DOMAIN”, “ Sid”:“ S-1-5-21-34343434-3434343434-3434334-242240” } ]
如何将其变成具有三列和两个角色的表?当JSON中只有一条记录时,我可以执行此操作,但是当JSON中只有一个帐户时,我无法弄清楚。
答案 0 :(得分:2)
在不知道您尝试了什么的情况下,我无法告诉您您哪里出了错,但是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;