명시적 스키마와 함께 OPENJSON 사용
적용 대상: SQL Server 2016(13.x) 이상 버전
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics(서버리스 SQL 풀에만 해당)
Microsoft Fabric
Warehouse의 SQL 분석 엔드포인트
명시적 스키마와 함께 OPENJSON
사용하여 WITH 절에서 지정한 대로 서식이 지정된 테이블을 반환합니다.
다음은 명시적 스키마와 함께 OPENJSON
사용하는 몇 가지 예입니다. 자세한 내용 및 더 많은 예제는 OPENJSON(Transact-SQL)을 참조하세요.
예제 - WITH 절을 사용하여 출력 서식 지정
다음 쿼리는 아래 표에 나와 있는 결과를 반환합니다.
AS JSON
절을 사용하면 col5
및 array_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 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.