명시적 스키마와 함께 JSON 사용(SQL Server)Use OPENJSON with an Explicit Schema (SQL Server)

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure 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. AS JSON 절을 사용하는 경우 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 "text2""text2" NULLNULL "text4""text4" { "data": "text4" }{ "data": "text4" } {"k1": true, "k2": "text2", "k4": { "data": "text4" } }{"k1": true, "k2": "text2", "k4": { "data": "text4" } }
3131 "32""32" NULLNULL NULLNULL NULLNULL {"k1": 31, "k2": 32 }{"k1": 31, "k2": 32 }
4141 NULLNULL NULLNULL falsefalse { "data": false }{ "data": false } {"k1": 41, "k2": null, "k4": { "data": false } }{"k1": 41, "k2": null, "k4": { "data": false } }

예 - SQL ServerSQL Server 테이블에 JSON 로드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의 기본 제공 JSON 지원에 대한 자세한 정보Learn more about the built-in JSON support in SQL Server

많은 특정 솔루션, 사용 사례 및 권장 사항은 Microsoft 프로그램 관리자인 Jovan Popovic이 제공하는 SQL Server 및 Azure SQL Database의 기본 제공 JSON 지원에 대한 블로그 게시물을 참조하세요.For lots of specific solutions, use cases, and recommendations, see the blog posts about the built-in JSON support in SQL Server and in Azure SQL Database by Microsoft Program Manager Jovan Popovic.

관련 항목:See Also

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