Sdílet prostřednictvím


JSON_CONTAINS (Transact-SQL)

Platí pro: SQL Server 2025 (17.x)

Vyhledá hodnotu SQL v rámci cesty v dokumentu JSON.

Note

Funkce JSON_CONTAINS je momentálně v náhledu a dostupná pouze v SQL Server 2025 (17.x).

Transact-SQL konvence syntaxe

Syntax

JSON_CONTAINS( target_expression , search_value_expression [ , path_expression ]  [ , search_mode ] )

Arguments

target_expression

Výraz, který vrátí cílový dokument JSON, který se má prohledávat. Hodnota může být hodnota typu JSON nebo řetězcová hodnota znaku, která obsahuje dokument JSON.

search_value_expression

Výraz, který vrací skalární hodnotu SQL nebo hodnotu typu JSON pro hledání v zadaném dokumentu SQL/JSON.

path

Cesta SQL/JSON, která určuje cíl vyhledávání v dokumentu JSON. Tento parametr je volitelný.

Proměnnou můžete zadat jako hodnotu cesty. Cesta JSON může určit laxní nebo striktní režim pro analýzu. Pokud nezadáte režim analýzy, je výchozí laxní režim. Další informace najdete v tématu Výrazy cesty JSON v databázovém stroji SQL.

Výchozí hodnota pro cestu je $. Pokud tedy nezadáte hodnotu pro cestu, JSON_CONTAINS vyhledá hodnotu v celém dokumentu JSON.

Pokud formát cesty není platný, JSON_CONTAINS vrátí chybu.

search_mode

Určuje, jestli má režim hledání hodnoty použít sémantiku rovnosti nebo sémantiky LIKE. Tento parametr platí pouze v případě , že search_value_expression je hodnota řetězce znaků. Výchozí hodnota pro search_mode je 0, což označuje sémantiku sémantiky rovnosti. Pokud je search_mode 1, znamená to, že se má použít sémantika predikátu LIKE.

Návratová hodnota

Vrátí hodnotu typu int , 01nebo NULL. Hodnota 1 označuje, že zadaná vyhledávací hodnota byla obsažena v cílovém dokumentu JSON nebo 0 jinak. Funkce JSON_CONTAINS vrátí NULL , pokud některý z argumentů je NULLnebo pokud se v dokumentu JSON nenajde zadaná cesta SQL/JSON.

Remarks

Funkce JSON_CONTAINS se řídí těmito pravidly pro vyhledávání, pokud je hodnota obsažena v dokumentu JSON:

  • Skalární vyhledávací hodnota je obsažena v cílovém skaláru, pokud jsou srovnatelné a jsou stejné. Vzhledem k tomu, že typy JSON mají pouze číslo JSON nebo řetězec nebo hodnotu true/false, možné skalární typy SQL, které je možné zadat jako vyhledávací hodnotu, jsou omezené na číselné typy SQL, typy řetězců znaků a bitový typ.

  • Typ SQL skalární hodnoty hledání se používá k porovnání s hodnotou typu JSON v zadané cestě. Jedná se o jiný typ predikátu založeného na JSON_VALUE, kde funkce JSON_VALUE vždy vrací hodnotu řetězce znaků.

  • Hodnota hledání pole JSON je obsažena v cílovém poli, pokud a pouze pokud je každý prvek vyhledávacího pole obsažen v některém prvku cílového pole.

  • Skalární hodnota hledání je obsažena v cílovém poli, pokud a pouze pokud je vyhledávací hodnota obsažena v některém prvku cílového pole.

  • Hodnota hledání objektů JSON je obsažena v cílovém objektu, pokud a pouze pokud se v cílovém objektu nachází každý klíč/hodnota v objektu hledání.

Limitations

JSON_CONTAINS Použití funkce má následující omezení:

  • Typ JSON není podporován jako hodnota hledání.
  • Vrácený objekt JSON nebo pole JSON_QUERY není podporováno jako hodnota hledání.
  • Parametr cesty je aktuálně povinný.
  • Pokud cesta SQL/JSON odkazuje na pole, je ve výrazu cesty SQL/JSON vyžadován zástupný znak. Automatické rozbalení pole je momentálně pouze na prvním stupni.

Podpora indexu JSON_CONTAINS JSON zahrnuje predikát a následující operátory:

  • Porovnávací operátory (=)
  • IS [NOT] NULL predikát (aktuálně není podporován)

Examples

A. Vyhledání celočíselné hodnoty SQL v cestě JSON

Následující příklad ukazuje, jak vyhledat hodnotu int SQL v poli JSON v cestě JSON.

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;

Tady je soubor výsledků.

is_value_found
--------
1

B. Vyhledání hodnoty řetězce znaků SQL v cestě JSON

Následující příklad ukazuje, jak vyhledat hodnotu řetězce znaků SQL v poli JSON v cestě JSON.

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;

Tady je soubor výsledků.

is_value_found
--------
1

C. Vyhledání bitové hodnoty SQL v poli JSON v cestě JSON

Následující příklad ukazuje, jak vyhledat bitovou hodnotu SQL v poli JSON v cestě JSON.

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;

Tady je soubor výsledků.

is_value_found
--------
1

D. Hledání celočíselné hodnoty SQL obsažené v vnořeném poli JSON

Následující příklad ukazuje, jak vyhledat hodnotu int JAZYKa SQL obsaženou v vnořeném poli JSON v cestě JSON.

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;

Tady je soubor výsledků.

is_value_found
--------
1

E. Hledání celočíselné hodnoty SQL obsažené v objektu JSON v poli JSON

Následující příklad ukazuje, jak vyhledat hodnotu int JAZYKa SQL obsaženou v objektu JSON v poli JSON v cestě JSON.

DECLARE @j AS JSON = '[{"a": 1}, {"b": 2}, {"c": 3}, {"a": 56}]';

SELECT json_contains(@j, 56, '$[*].a') AS is_value_found;

Tady je soubor výsledků.

is_value_found
--------
1

F. Vyhledání hodnoty řetězce znaků SQL v cestě JSON pomocí vzoru se zástupnými znaky

Následující příklad ukazuje, jak vyhledat hodnotu řetězce znaků SQL pomocí vzoru v poli JSON v cestě JSON.

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;

Tady je soubor výsledků.

is_value_found
--------
1