명시적 스키마와 함께 JSON 사용(SQL Server)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance Azure 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 데이터베이스에서의 JSON에 대해 알아보기
Microsoft 비디오
SQL Server 및 Azure SQL 데이터베이스에서 기본 제공 JSON 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.