명시적 스키마와 함께 JSON 사용(SQL Server)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics(서버리스 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 | array_element |
---|---|---|---|---|---|
11 | NULL | "text" | NULL | NULL | {"k1": 11, "k2": null, "k3": "text"} |
21 | "text2" | NULL | "text4" | { "data": "text4" } | {"k1": true, "k2": "text2", "k4": { "data": "text4" } } |
31 | "32" | NULL | NULL | NULL | {"k1": 31, "k2": 32 } |
41 | NULL | NULL | false | { "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 Server 및 Azure SQL Database의 JSON에 대해 자세히 알아보기
Microsoft 비디오
SQL Server 및 Azure SQL Database의 기본 제공 JSON 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.
참고 항목
피드백
https://aka.ms/ContentUserFeedback을 참조하세요.
출시 예정: 2024년 내내 콘텐츠 피드백 메커니즘인 GitHub 문제를 단계적으로 폐지하고 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은다음에 대한 사용자 의견 제출 및 보기