다음을 통해 공유


기본 스키마와 함께 OPENJSON 사용

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics

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

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

예제 - 개체의 각 속성 반환

쿼리

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

결과

name 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 개체는 "제작자" 및 "품질"과 같은 속성을 포함합니다. 이 예에서는 판매 이유가 별도의 자식 테이블에 저장된 것처럼 JSON 판매 이유 배열을 확장하여 모든 판매 주문 행을 관련 판매 이유에 연결하는 보고서를 만듭니다.

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

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

SQL Server 및 Azure SQL 데이터베이스에서의 JSON에 대해 알아보기

Microsoft 비디오

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

참고 항목

OPENJSON(Transact-SQL)