次の方法で共有


既定のスキーマを使用する OPENJSON の使用

適用対象: Sql Server 2016 (13.x) 以降のバージョン Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL データベースの Microsoft Fabric プレビュー

既定のスキーマで OPENJSON を使用して、オブジェクトのプロパティごとに、または配列内の各要素に対して 1 行のテーブルを返します。

既定のスキーマで OPENJSON を使用する例をいくつか次に示します。 詳細とその他の例については、 OPENJSON (Transact-SQL) を参照してください。

例 - オブジェクトの各プロパティを返す

Query

SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}') 

Results

Key Value
name John
surname Doe
age 45

例 - 配列の各要素を返す

Query

SELECT [key],value
FROM OPENJSON('["en-GB", "en-UK","de-AT","es-AR","sr-Cyrl"]') 

Results

Key Value
0 en-GB
1 en-UK
2 de-AT
3 es-AR
4 sr-Cyrl

例 - JSON を一時テーブルに変換する

次のクエリは、 info オブジェクトのすべてのプロパティを返します。

DECLARE @json NVARCHAR(MAX)

SET @json=N'{  
     "info":{    
       "type":1,  
       "address":{    
         "town":"Bristol",  
         "county":"Avon",  
         "country":"Great Britain"  
       },  
       "tags":["Sport", "Water polo"]  
    },  
    "type":"Basic"  
 }'

SELECT *
FROM OPENJSON(@json,N'lax $.info')

Results

Key Value タイプ
1 0
address { "町":"ブリストル", "群":"エイボン", "国":"英国" } 5
tags [「スポーツ」、「Water ポーロ」] 4

例 - リレーショナル データと JSON データを結合する

次の例では、JSON 形式で SalesOrderReasons の配列を含む SalesReason テキスト列が、SalesOrderHeader テーブルにあります。 販売注文理由オブジェクトには、 「製造元」や「品質」などのプロパティが含まれます。 この例では、販売理由が別の子テーブルに含まれているかのように販売理由の JSON 配列を展開することで、すべての販売注文行を関連する販売理由に結合するレポートを作成します。

SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)

この例では、OPENJSON から販売理由のテーブルが返されます。このテーブルでは、販売理由が値列として示されます。 CROSS APPLY 演算子は、OPENJSON テーブル値関数によって返される行に各販売注文の行を結合します。

SQL データベース エンジンでの JSON の詳細

Microsoft ビデオ

組み込みの JSON サポートの視覚的な概要については、次のビデオを参照してください。