Microsoft SQL Server 内部JSONサブオブジェクトの抽出


OPENJSONはJSONテキスト内のJSONオブジェクトの断片を抽出できます。 JSONサブオブジェクトを参照する列定義で、nvarchar(max)型とAS JSONオプションを設定します。

declare @json nvarchar(4000) = N'[
  {"Number":"SO43659","Date":"2011-05-31T00:00:00","info":{"customer":"MSFT","Price":59.99,"qty":1}},
  {"Number":"SO43661","Date":"2011-06-01T00:00:00","info":{"customer":"Nokia","Price":24.99,"qty":3}}
]'

SELECT    * 
FROM OPENJSON (@json)
    WITH (
          Number   varchar(200),
          Date     datetime,
          Info nvarchar(max) '$.info' AS JSON
  )

Info列は "Info"オブジェクトにマップされます。結果は次のようになります。

日付情報
SO43659 2011-05-31T00:00:00 {"customer": "MSFT"、 "Price":59.99、 "qty":1}
SO43661 2011-06-01T00:00:00 {"customer": "Nokia"、 "Price":24.99、 "qty":3}