将嵌套的 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