明示的なスキーマで OPENJSON を使用する (SQL Server)Use OPENJSON with an Explicit Schema (SQL Server)

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

OPENJSON と共に明示的なスキーマを使用し、WITH 句で指定した書式設定のテーブルを返します。Use OPENJSON with an explicit schema to return a table that's formatted as you specify in the WITH clause.

ここでは、 OPENJSON と明示的なスキーマを使用する例をいくつか紹介します。Here are some examples that use OPENJSON with an explicit schema. 詳細とその他の例については、 OPENJSON (Transact-SQL)を参照してください。For more info and more examples, see OPENJSON (Transact-SQL).

例 - WITH 句を使用し、出力を書式設定するExample - Use the WITH clause to format the output

次のクエリでは、次の表に示すように結果を返します。The following query returns the results shown in the following table. JSON の AS 句が col5 および array_element でスカラー値ではなく、JSON オブジェクトとして返される値がどのように発生する方法に注意してください。Notice how the AS JSON clause causes values to be returned as JSON objects instead of scalar values in col5 and array_element.

DECLARE @json NVARCHAR(MAX) =
N'{"someObject":   
    {"someArray":  
      [  
          {"k1": 11, "k2": null, "k3": "text"},  
          {"k1": 21, "k2": "text2", "k4": { "data": "text4" }},  
          {"k1": 31, "k2": 32},  
          {"k1": 41, "k2": null, "k4": { "data": false }}     
       ]  
    }  
 }'  
   
SELECT * FROM  
 OPENJSON(@json, N'lax $.someObject.someArray')  
WITH ( k1 int,   
        k2 varchar(100),  
        col3 varchar(6) N'$.k3',  
        col4 varchar(10) N'lax $.k4.data',  
        col5 nvarchar(MAX) N'lax $.k4' AS JSON, 
        array_element nvarchar(MAX) N'$' AS JSON  
 )  

結果Results

k1k1 k2k2 col3col3 col4col4 col5col5 array_elementarray_element
1111 NULLNULL "text""text" NULLNULL NULLNULL {"k1":11, "k2": null, "k3": "text"}{"k1": 11, "k2": null, "k3": "text"}
2121 テキスト「2」"text2" NULLNULL テキスト「4」"text4" {「データ」:"テキスト"が 4}{ "data": "text4" } {"k1": true,"k2":"text2"、"k4": {「データ」: テキスト「4」}}{"k1": true, "k2": "text2", "k4": { "data": "text4" } }
3131 "32""32" NULLNULL NULLNULL NULLNULL {"k1":31, "k2":32 }{"k1": 31, "k2": 32 }
4141 NULLNULL NULLNULL オプションfalse {「データ」: false}{ "data": false } {"k1":41, "k2": null, "k4": { "data": false } }{"k1": 41, "k2": null, "k4": { "data": false } }

例 - JSON を SQL ServerSQL Server テーブルに読み込む。Example - Load JSON into a SQL ServerSQL Server table.

次の例では、全体の JSON オブジェクトを SQL ServerSQL Server テーブルです。The following example loads an entire JSON object into a SQL ServerSQL Server table.

DECLARE @json NVARCHAR(MAX) = '{  
  "id" : 2,  
  "firstName": "John",  
  "lastName": "Smith",  
  "isAlive": true,  
  "age": 25,  
  "dateOfBirth": "2015-03-25T12:00:00",  
  "spouse": null  
  }';  
   
  INSERT INTO Person  
  SELECT *   
  FROM OPENJSON(@json)  
  WITH (id int,  
        firstName nvarchar(50), lastName nvarchar(50),   
        isAlive bit, age int,  
        dateOfBirth datetime2, spouse nvarchar(50))  

SQL Server と Azure SQL Database の JSON の詳細情報Learn more about JSON in SQL Server and Azure SQL Database

Microsoft ビデオMicrosoft videos

SQL Server と Azure SQL Database に組み込まれている JSON のサポートの視覚的な紹介は、次のビデオをご覧ください。For a visual introduction to the built-in JSON support in SQL Server and Azure SQL Database, see the following videos:

参照See Also

OPENJSON (Transact-SQL)OPENJSON (Transact-SQL)