处理 SQL OPENJSON WITH 命令中的嵌套 JSON?
Dealing with nested JSON in SQL OPENJSON WITH command?
我有 JSON 具有某种结构的值,但我正在努力达到第 3 级。我正在使用 CROSS APPLY OPENJSON 获取“Lines”数据,但我需要从 TaxCode 区域中获取“Code”……它似乎是它自己的 JSON 数组?
如有任何帮助,我们将不胜感激……这就是我目前所拥有的……
DECLARE @JSONText NVarChar(max) = '{
"UID": "845bc256-6027-4a89-8c05-35e4bb8e6aba",
"Number": "00013608",
"Lines": [{
"RowID": 1,
"Total": 20.0,
"TaxCode": "@{UID=f2cc83e5-0f7f-4831-9d88-dbe110e0683a; Code=S15}"
},{
"RowID": 2,
"Total": 55.49,
"TaxCode": "@{UID=a5cc34e5-0fr4-4325-9d67-bdh110e0683a; Code=S17}"
}]
}';
SELECT J.[UID],J.[Number],LI.*
FROM OPENJSON (@JSONText)
WITH (
[UID] nvarchar(512) '$."UID"',
[Number] nvarchar(50) '$."Number"',
[LineItems] NVarChar(max) '$."Lines"' AS JSON
) J
CROSS APPLY OPENJSON (J.[LineItems])
WITH (
[RowID] INT '$."RowID"',
[Total] Decimal(12,2) '$."Total"',
[TaxCode] NVarChar(512) '$."TaxCode"',
[TaxCodeTest] NVarChar(50) '$."TaxCode.Code"'
) LI;
由于提供的 TaxCode 值不是“真实的”JSON 对象,我不得不使用一些 SQL 来处理它,因为字符串结束获取所需的数据。我最终创建了一个函数来使用这个问题的灵感...
A SQL Query to select a string between two known strings
我有 JSON 具有某种结构的值,但我正在努力达到第 3 级。我正在使用 CROSS APPLY OPENJSON 获取“Lines”数据,但我需要从 TaxCode 区域中获取“Code”……它似乎是它自己的 JSON 数组?
如有任何帮助,我们将不胜感激……这就是我目前所拥有的……
DECLARE @JSONText NVarChar(max) = '{
"UID": "845bc256-6027-4a89-8c05-35e4bb8e6aba",
"Number": "00013608",
"Lines": [{
"RowID": 1,
"Total": 20.0,
"TaxCode": "@{UID=f2cc83e5-0f7f-4831-9d88-dbe110e0683a; Code=S15}"
},{
"RowID": 2,
"Total": 55.49,
"TaxCode": "@{UID=a5cc34e5-0fr4-4325-9d67-bdh110e0683a; Code=S17}"
}]
}';
SELECT J.[UID],J.[Number],LI.*
FROM OPENJSON (@JSONText)
WITH (
[UID] nvarchar(512) '$."UID"',
[Number] nvarchar(50) '$."Number"',
[LineItems] NVarChar(max) '$."Lines"' AS JSON
) J
CROSS APPLY OPENJSON (J.[LineItems])
WITH (
[RowID] INT '$."RowID"',
[Total] Decimal(12,2) '$."Total"',
[TaxCode] NVarChar(512) '$."TaxCode"',
[TaxCodeTest] NVarChar(50) '$."TaxCode.Code"'
) LI;
由于提供的 TaxCode 值不是“真实的”JSON 对象,我不得不使用一些 SQL 来处理它,因为字符串结束获取所需的数据。我最终创建了一个函数来使用这个问题的灵感...
A SQL Query to select a string between two known strings