적용 대상: SQL Server 2025(17.x) 미리 보기
JSON 문서의 경로에서 SQL 값을 검색합니다.
비고
이 JSON_CONTAINS
함수는 현재 미리 보기 상태이며 SQL Server 2025(17.x) 미리 보기에서만 사용할 수 있습니다.
문법
JSON_CONTAINS( target_expression , search_value_expression [ , path_expression ] )
주장들
target_expression
검색할 대상 JSON 문서를 반환하는 식입니다. 값은 JSON 문서를 포함하는 json 형식 또는 문자열 값일 수 있습니다.
search_value_expression
지정된 SQL/JSON 문서에서 검색할 SQL 스칼라 값 또는 json 형식 값을 반환하는 식입니다.
경로
JSON 문서의 검색 대상을 지정하는 SQL/JSON 경로입니다. 이 매개 변수는 선택 사항입니다.
변수를 경로 값으로 제공할 수 있습니다. JSON 경로는 구문 분석을 위해 lax 또는 strict 모드를 지정할 수 있습니다. 구문 분석 모드를 지정하지 않으면 lax 모드가 기본값입니다. 자세한 내용은 JSON 경로 식(SQL Server)을 참조하세요.
경로의 기본값은 .입니다$
. 따라서 경로JSON_CONTAINS
값을 제공하지 않으면 전체 JSON 문서에서 값을 검색합니다.
경로의 형식이 유효하지 않으면 JSON_CONTAINS
이(가) 오류를 반환합니다.
반환 값
, 0
, 또는 1
의 NULL
값을 반환합니다. 값은 1
지정된 검색 값이 대상 JSON 문서 내에 포함되었거나 0
그렇지 않은 경우를 나타냅니다. 함수는 JSON_CONTAINS
인수NULL
가 있거나 JSON 문서에서 지정된 SQL/JSON 경로를 찾을 수 없는 경우 반환 NULL
합니다.
비고
이 함수는 JSON_CONTAINS
값이 JSON 문서에 포함되어 있는지 검색하기 위해 다음 규칙을 따릅니다.
스칼라 검색 값은 비교할 수 있고 같은 경우에만 대상 스칼라에 포함됩니다. json 형식에는 JSON 번호 또는 문자열 또는 true/false 값만 있으므로 검색 값으로 지정할 수 있는 SQL 스칼라 형식은 SQL 숫자 형식, 문자 문자열 형식 및 비트 형식으로 제한됩니다.
스칼라 검색 값의 SQL 형식은 지정된 경로의 json 형식 값과 비교를 수행하는 데 사용됩니다.
JSON_VALUE
기반 조건자는JSON_VALUE
함수가 항상 문자열 값을 반환하는 경우와 다릅니다.검색 배열의 모든 요소가 대상 배열의 일부 요소에 포함된 경우에만 JSON 배열 검색 값이 대상 배열에 포함됩니다.
검색 값이 대상 배열의 일부 요소에 포함된 경우에만 스칼라 검색 값이 대상 배열에 포함됩니다.
검색 개체의 각 키/값이 대상 개체에 있는 경우에만 JSON 개체 검색 값이 대상 개체에 포함됩니다.
제한점
함수를 JSON_CONTAINS
사용하는 경우 다음과 같은 제한 사항이 있습니다.
- json 형식은 검색 값으로 지원되지 않습니다.
- 반환
JSON_QUERY
된 JSON 개체 또는 배열은 검색 값으로 지원되지 않습니다. - 경로 매개 변수는 현재 필요합니다.
- SQL/JSON 경로가 배열을 가리키는 경우 SQL/JSON 경로 식에 와일드카드가 필요합니다. 자동 배열 래핑 해제는 현재 첫 번째 수준에만 있습니다.
JSON 인덱스 지원에는 조건자와 다음 연산자가 포함됩니다 JSON_CONTAINS
.
- 비교 연산자(
=
) -
IS [NOT] NULL
서술어(현재 지원되지 않음)
예시
A. JSON 경로에서 SQL 정수 값 검색
다음 예제에서는 JSON 경로의 JSON 배열 에서 SQL int 값을 검색하는 방법을 보여줍니다.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, 1, '$.a') AS is_value_found;
결과 집합은 다음과 같습니다.
is_value_found
--------
1
B. JSON 경로에서 SQL 문자 문자열 값 검색
다음 예제에서는 JSON 경로의 JSON 배열에서 SQL 문자 문자열 값을 검색하는 방법을 보여줍니다.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, 'dd', '$.c.ce[*]') AS is_value_found;
결과 집합은 다음과 같습니다.
is_value_found
--------
1
C. JSON 경로의 JSON 배열에서 SQL 비트 값 검색
다음 예제에서는 JSON 경로의 JSON 배열에서 sql 비트 값을 검색하는 방법을 보여 있습니다.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, CAST (0 AS BIT), '$.d[*]') AS is_value_found;
결과 집합은 다음과 같습니다.
is_value_found
--------
1
D. 중첩된 JSON 배열 내에 포함된 SQL 정수 값 검색
다음 예제에서는 JSON 경로의 중첩된 JSON 배열 내에 포함된 SQL int 값을 검색하는 방법을 보여줍니다.
DECLARE @j AS JSON = '{"a": 1, "b": 2, "c": {"d": 4, "ce":["dd"]}, "d": [1, 3, {"df": [89]}, false], "e":null, "f":true}';
SELECT json_contains(@j, 89, '$.d[*].df[*]') AS is_value_found;
결과 집합은 다음과 같습니다.
is_value_found
--------
1
E. JSON 배열의 JSON 개체 내에 포함된 SQL 정수 값 검색
다음 예제에서는 JSON 경로의 JSON 배열에서 JSON 개체 내에 포함된 SQL int 값을 검색하는 방법을 보여줍니다.
DECLARE @j AS JSON = '[{"a": 1}, {"b": 2}, {"c": 3}, {"a": 56}]';
SELECT json_contains(@j, 56, '$[*].a') AS is_value_found;
결과 집합은 다음과 같습니다.
is_value_found
--------
1