기본 스키마와 함께 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 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기