기본 스키마와 함께 OPENJSON 사용

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

기본 스키마와 함께 OPENJSON을 사용하여 개체의 각 속성 또는 배열의 각 요소에 대해 하나의 행이 있는 테이블을 반환합니다.

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

예제 - 개체의 각 속성 반환

쿼리

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

결과

이름 John
surname Doe
연령 45

예제 - 배열의 각 요소 반환

쿼리

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

결과

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

예 - JSON을 임시 테이블로 변환

다음 쿼리는 정보 개체의 모든 속성을 반환합니다.

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')

결과

Type
type 1 0
address { "town":"Bristol", "county":"Avon", "country":"Great Britain" } 5
tags [ "Sport", "Water polo" ] 4

예제 - 관계형 데이터 및 JSON 데이터 결합

다음 예에서는 SalesOrderHeader 테이블에 JSON 형식의 SalesOrderReasons 배열을 포함하는 SalesReason 텍스트 열이 있습니다. SalesOrderReasons 개체에는 "Manufacturer" 및 "Quality"와 같은 속성이 포함되어 있습니다. 이 예제에서는 판매 이유의 JSON 배열을 별도의 자식 테이블에 저장한 것처럼 확장하여 모든 판매 주문 행을 관련 판매 이유에 조인하는 보고서를 만듭니다.

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

이 예제에서 OPENJSON은 이유가 값 열로 표시되는 판매 이유 테이블을 반환합니다. CROSS APPLY 연산자는 각 판매 주문 행을 OPENJSON 테이블 반환 함수에서 반환된 행에 조인합니다.

SQL Server 및 Azure SQL Database의 JSON에 대해 자세히 알아보기

Microsoft 비디오

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

참고 항목

OPENJSON(Transact-SQL)