將巢狀的 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