적용 대상: SQL Server 2025(17.x)
JSON 문서의 경로에서 SQL 값을 검색합니다.
Note
이 JSON_CONTAINS 기능은 현재 미리보기 단계이며 SQL Server 2025(17.x)에서만 사용할 수 있습니다.
Syntax
JSON_CONTAINS( target_expression , search_value_expression [ , path_expression ] [ , search_mode ] )
Arguments
target_expression
검색할 대상 JSON 문서를 반환하는 식입니다. 값은 JSON 문서를 포함하는 json 형식 또는 문자열 값일 수 있습니다.
search_value_expression
지정된 SQL/JSON 문서에서 검색할 SQL 스칼라 값 또는 json 형식 값을 반환하는 식입니다.
path
JSON 문서의 검색 대상을 지정하는 SQL/JSON 경로입니다. 이 매개 변수는 선택 사항입니다.
변수를 경로 값으로 제공할 수 있습니다. JSON 경로는 구문 분석을 위해 lax 또는 strict 모드를 지정할 수 있습니다. 구문 분석 모드를 지정하지 않으면 lax 모드가 기본값입니다. 자세한 내용은 SQL Database 엔진의 JSON 경로 식을 참조하세요.
경로의 기본값은 .입니다$. 따라서 경로JSON_CONTAINS 값을 제공하지 않으면 전체 JSON 문서에서 값을 검색합니다.
경로 형식이 유효 JSON_CONTAINS 하지 않으면 오류를 반환합니다.
search_mode
값의 검색 모드에서 같음 또는 LIKE 조건자 의미 체계를 사용해야 하는지 여부를 나타냅니다. 이 매개 변수는 search_value_expression 문자열 값인 경우에만 적용됩니다. search_mode 기본값은 0으로, 같음 조건자 의미 체계를 나타냅니다. search_mode 1이면 LIKE 조건자 의미 체계를 사용해야 임을 나타냅니다.
반환 값
, 0, 또는 1의 NULL 값을 반환합니다. 값은 1 지정된 검색 값이 대상 JSON 문서 내에 포함되었거나 0 그렇지 않은 경우를 나타냅니다. 함수는 JSON_CONTAINS 인수NULL가 있거나 JSON 문서에서 지정된 SQL/JSON 경로를 찾을 수 없는 경우 반환 NULL 합니다.
Remarks
이 함수는 JSON_CONTAINS 값이 JSON 문서에 포함되어 있는지 검색하기 위해 다음 규칙을 따릅니다.
스칼라 검색 값은 비교할 수 있고 같은 경우에만 대상 스칼라에 포함됩니다. json 형식에는 JSON 번호 또는 문자열 또는 true/false 값만 있으므로 검색 값으로 지정할 수 있는 SQL 스칼라 형식은 SQL 숫자 형식, 문자 문자열 형식 및 비트 형식으로 제한됩니다.
스칼라 검색 값의 SQL 형식은 지정된 경로의 json 형식 값과 비교를 수행하는 데 사용됩니다.
JSON_VALUE기반 조건자는JSON_VALUE함수가 항상 문자열 값을 반환하는 경우와 다릅니다.검색 배열의 모든 요소가 대상 배열의 일부 요소에 포함된 경우에만 JSON 배열 검색 값이 대상 배열에 포함됩니다.
검색 값이 대상 배열의 일부 요소에 포함된 경우에만 스칼라 검색 값이 대상 배열에 포함됩니다.
검색 개체의 각 키/값이 대상 개체에 있는 경우에만 JSON 개체 검색 값이 대상 개체에 포함됩니다.
Limitations
함수를 JSON_CONTAINS 사용하는 경우 다음과 같은 제한 사항이 있습니다.
- json 형식은 검색 값으로 지원되지 않습니다.
- 반환
JSON_QUERY된 JSON 개체 또는 배열은 검색 값으로 지원되지 않습니다. - 경로 매개 변수는 현재 필요합니다.
- SQL/JSON 경로가 배열을 가리키는 경우 SQL/JSON 경로 식에 와일드카드가 필요합니다. 자동 배열 래핑 해제는 현재 첫 번째 수준에만 있습니다.
JSON 인덱스 지원에는 조건자와 다음 연산자가 포함됩니다 JSON_CONTAINS .
- 비교 연산자(
=) -
IS [NOT] NULL서술어(현재 지원되지 않음)
Examples
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
F. 와일드카드 패턴을 사용하여 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