将嵌套的 JSON 字段转换为行集
OPENJSON 函数解析 JSON 对象的集合,并将 JSON 文本中的值作为行集返回。如果输入对象中的值是嵌套的,则可以在 WITH 子句的每个列中指定其他映射参数:
declare @json nvarchar(4000) = N'[
{"data":{"num":"SO43659","date":"2011-05-31T00:00:00"},"info":{"customer":"MSFT","Price":59.99,"qty":1}},
{"data":{"number":"SO43661","date":"2011-06-01T00:00:00"},"info":{"customer":"Nokia","Price":24.99,"qty":3}}
]'
SELECT *
FROM OPENJSON (@json)
WITH (
Number varchar(200) '$.data.num',
Date datetime '$.data.date',
Customer varchar(200) '$.info.customer',
Quantity int '$.info.qty',
)
在 WITH 子句中指定了 OPENJSON 函数的返回模式。在类型指定 JSON 节点的路径后,应该找到返回值。JSON 对象中的键由这些路径提取。值会自动转换为指定的类型。
数 | 日期 | 顾客 | 数量 |
---|---|---|---|
SO43659 |
2011-05-31T00:00:00 | MSFT | 1 |
SO43661 |
2011-06-01T00:00:00 | 诺基亚 | 3 |