0

我有 JSON 值,它有一些结构,但我正在努力达到第 3 级。我正在使用 CROSS APPLY OPENJSON 来获取“行”数据,但我需要从 TaxCode 区域中获取“代码”......这似乎是它自己的 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;
4

1 回答 1

0

由于提供的 TaxCode 值不是“真正的”JSON 对象,因此我不得不使用一些 SQL 来处理它,因为它以字符串结尾获取所需的数据。我最终创建了一个函数来使用这个问题的灵感......

在两个已知字符串之间选择一个字符串的 SQL 查询

于 2020-11-16T02:47:51.993 回答