適用対象: Sql Server 2016 (13.x) 以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL データベースの 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 サポートの視覚的な概要については、次のビデオを参照してください。