다음을 통해 공유


명시적 스키마와 함께 OPENJSON 사용

적용 대상: SQL Server 2016(13.x) 이상 버전 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics(서버리스 SQL 풀에만 해당)Microsoft FabricWarehouse의 SQL 분석 엔드포인트

명시적 스키마와 함께 OPENJSON 사용하여 WITH 절에서 지정한 대로 서식이 지정된 테이블을 반환합니다.

다음은 명시적 스키마와 함께 OPENJSON 사용하는 몇 가지 예입니다. 자세한 내용 및 더 많은 예제는 OPENJSON(Transact-SQL)을 참조하세요.

예제 - WITH 절을 사용하여 출력 서식 지정

다음 쿼리는 아래 표에 나와 있는 결과를 반환합니다. AS JSON 절을 사용하면 col5array_element스칼라 값 대신 JSON 개체로 값이 반환됩니다.

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  
 )  

결과

k1 k2 col3 col4 col5 배열_요소
11 NULL 텍스트 NULL NULL {"k1": 11, "k2": null, "k3": "text"}
21 텍스트2 NULL 텍스트4 { "data": "text4" } {"k1": true, "k2": "text2", "k4": { "data": "text4" } }
31 "32" NULL NULL NULL {"k1": 31, "k2": 32 }
41 NULL NULL 거짓 { "data": false } {"k1": 41, "k2": null, "k4": { "data": false } }

예제 - SQL Server 테이블에 JSON을 로드합니다.

다음 예에는 전체 JSON 개체를 SQL Server 테이블에 로드합니다.

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 Database 엔진의 JSON에 대해 자세히 알아보기

SQL Server 및 Azure SQL 데이터베이스에서 기본 제공 JSON 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.