aGu*_*Guy 4 sql t-sql json cross-apply
我有一系列OPENJSON语句,在我的存储过程的最后一步,我从倒数第二个表中的最后一列解析一些JSON.最后一列几乎总是空的,但它是从JSON对象填充的,因此它偶尔会有一些信息.我试图将表1转换为FinalTable,如下所示:
Table 1
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Adjustments
123 592 593 data rand fake data []
345 035 021 ll need food now [ { "id": 999, "adj1": 123 }]
FinalTable
Col1 Col2 Col3 Col4 Col5 Col6 Col7 AdjID Adj1 Adj2 Adj3
123 592 593 data rand fake data NULL NULL NULL NULL
345 035 021 ll need food now 999 123 NULL NULL
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
INSERT into FinalTable ([Col1], [Col2], [Col3], [Col4], [Col5], [Col6], [Col7], [AdjID], [Adj1], [Adj2], [Adj3]
)
SELECT [Col1], [Col2], [Col3], [Col4], [Col5], [Col6], [Col7], [AdjID], [Adj1], [Adj2], [Adj3]
FROM StageStep2 cross apply
OPENJSON (Adjustments)
WITH (
AdjID nvarchar(200) '$.id',
[Adj1] nvarchar(200) '$.adj1',
[Adj2] nvarchar(200) '$.adj2',
[Adj3] nvarchar(200) '$.adj3')
Run Code Online (Sandbox Code Playgroud)
在StageStep2中,[Adjustments]几乎总是包含[],因为该对象的原始JSON脚本中没有数据.
看起来因为我在最后一列中没有数据,所以OPENJSON没有解析任何东西并且总是返回'0行受影响' 基本上它只是说:"不,这里没有数据所以我没有解析shib"
如果列为空,我该怎么做才能使它仍然包含NULL值?