JSON 경로 식(SQL Server)
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics(서버리스 SQL 풀에만 해당)
JSON 경로 식을 사용하여 JSON 개체의 속성을 참조합니다.
다음 함수를 호출할 때 경로 식을 제공해야 합니다.
OPENJSON을 호출하여 JSON 데이터의 관계형 뷰를 만드는 경우 자세한 내용은 OPENJSON(Transact-SQL)을 참조하세요.
JSON_VALUE 호출하여 JSON 텍스트에서 값을 추출하는 경우 자세한 내용은 JSON_VALUE(Transact-SQL)를 참조 하세요.
JSON 개체 또는 배열을 추출하기 위해 JSON_QUERY 를 호출하는 경우. 자세한 내용은 JSON_QUERY(Transact-SQL)를 참조하세요.
JSON_MODIFY 호출하여 JSON 문자열의 속성 값을 업데이트하는 경우 자세한 내용은 JSON_MODIFY(Transact-SQL)를 참조 하세요.
경로 식의 일부
경로 식에는 두 가지 구성 요소가 있습니다.
PATH 모드
경로 식의 시작 부분에서 선택적으로 키워드(keyword) lax 또는 strict를 지정하여 경로 모드를 선언합니다. 기본값은 lax입니다.
lax 모드에서 경로 식에 오류가 포함된 경우 함수는 빈 값을 반환합니다. 예를 들어 값 $.name을 요청하고 JSON 텍스트에 이름 키가 없는 경우 함수는 null을 반환하지만 오류가 발생하지 않습니다.
strict 모드에서 이 함수는 경로 식에 오류가 포함된 경우 오류를 발생합니다.
다음 쿼리는 경로 식의 모드를 명시적으로 지정합니다 lax
.
DECLARE @json NVARCHAR(MAX);
SET @json=N'{ ... }';
SELECT * FROM OPENJSON(@json, N'lax $.info');
Path
선택적 경로 모드 선언 후에 경로 자체를 지정합니다.
달러 기호(
$
)는 컨텍스트 항목을 나타냅니다.속성 경로는 경로 단계의 집합입니다. 경로 단계는 다음 요소와 연산자를 포함할 수 있습니다.
키 이름입니다. 예를 들어
$.name
및$."first name"
를 지정합니다. 키 이름이 달러 기호로 시작하거나 공백 또는 점 연산자().
와 같은 특수 문자를 포함하는 경우 따옴표로 묶습니다.배열 요소입니다. 예:
$.product[3]
. 배열은 0부터 시작됩니다.점 연산자(
.
)는 개체의 멤버를 나타냅니다. 예를 들어$.people[1].surname
에서surname
은people
의 자식입니다.
예제
이 섹션의 예제에서는 다음 JSON 텍스트를 참조합니다.
{
"people": [{
"name": "John",
"surname": "Doe"
}, {
"name": "Jane",
"surname": null,
"active": true
}]
}
다음 테이블은 경로 식의 몇 가지 예를 보여줍니다.
경로 식 | 값 |
---|---|
$.people[0].name | John |
$.people[1] | { "name": "Jane", "surname": null, "active": true } |
$.people[1].surname | null |
$ | { "people": [ { "name": "John", "surname": "Doe" }, { "name": "Jane", "surname": null, "active": true } ] } |
기본 제공 함수가 중복 경로를 처리하는 방법
JSON 텍스트에 동일한 수준의 이름이 같은 두 개의 키와 같은 중복 속성이 포함된 경우 JSON_VALUE 및 JSON_QUERY 함수는 경로와 일치하는 첫 번째 값만 반환합니다. 중복 키가 포함된 JSON 개체를 구문 분석하고 모든 값을 반환하려면 다음 예제와 같이 OPENJSON을 사용합니다.
DECLARE @json NVARCHAR(MAX);
SET @json=N'{"person":{"info":{"name":"John", "name":"Jack"}}}';
SELECT value
FROM OPENJSON(@json,'$.person.info');
SQL Server 및 Azure SQL Database의 JSON에 대해 자세히 알아보기
Microsoft 비디오
참고 항목
이 섹션의 일부 비디오 링크는 현재 작동하지 않을 수 있습니다. Microsoft는 이전에 Channel 9에 있던 콘텐츠를 새 플랫폼으로 마이그레이션하고 있습니다. 비디오가 새 플랫폼으로 마이그레이션되면 링크를 업데이트할 예정입니다.
SQL Server 및 Azure SQL Database의 기본 제공 JSON 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.
참고 항목
OPENJSON(Transact-SQL)
JSON_VALUE(Transact-SQL)
JSON_QUERY(Transact-SQL)
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기