다음을 통해 공유


기본 스키마와 함께 OPENJSON 사용

적용 대상:Microsoft Fabric Preview의 SQL Server 2016(13.x) 이상 버전 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics SQL 데이터베이스

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

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

예제 - 개체의 각 속성 반환

Query

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

Results

Key Value
name John
surname Doe
age 45

예제 - 배열의 각 요소 반환

Query

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

Results

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

Results

Key Value Type
type 1 0
address { "town":"Bristol", "county":"Avon", "country":"Great Britain" } 5
tags [ "스포츠", "수구" ] 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 Database 엔진의 JSON에 대해 자세히 알아보기

Microsoft videos

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