Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2025 (17.x)
Wyszukuje wartość SQL w ścieżce w dokumencie JSON.
Note
Funkcja ta JSON_CONTAINS jest obecnie w wersji podglądowej i dostępna tylko w SQL Server 2025 (17.x).
Transact-SQL konwencje składni
Syntax
JSON_CONTAINS( target_expression , search_value_expression [ , path_expression ] [ , search_mode ] )
Arguments
target_expression
Wyrażenie zwracające docelowy dokument JSON do wyszukiwania. Wartość może być typem json lub wartością ciągu znaków, która zawiera dokument JSON.
search_value_expression
Wyrażenie zwracające wartość skalarną SQL lub wartość typu json do wyszukiwania w określonym dokumencie SQL/JSON.
path
Ścieżka SQL/JSON określająca element docelowy wyszukiwania w dokumencie JSON. Ten parametr jest opcjonalny.
Możesz podać zmienną jako wartość ścieżki. Ścieżka JSON może określać tryb lax lub ścisły na potrzeby analizowania. Jeśli nie określisz trybu analizowania, tryb lax jest domyślny. Aby uzyskać więcej informacji, zobacz Wyrażenia ścieżki JSON w a aparatu bazy danych SQL.
Wartość domyślna ścieżki to $. W związku z tym, jeśli nie podasz wartości dla ścieżki, JSON_CONTAINS wyszukaj wartość w całym dokumencie JSON.
Jeśli format ścieżki jest nieprawidłowy, JSON_CONTAINS zwraca błąd.
search_mode
Wskazuje, czy tryb wyszukiwania dla wartości powinien używać semantyki równości lub semantyki LIKE. Ten parametr ma zastosowanie tylko wtedy, gdy search_value_expression jest wartością ciągu znaków. Wartość domyślna dla search_mode to 0, co wskazuje predykat równości semantyki. Jeśli search_mode ma wartość 1, oznacza to, że należy użyć semantyki predykatu LIKE.
Wartość zwracana
Zwraca wartość int równą 0, 1 lub NULL. Wartość 1 wskazuje, że określona wartość wyszukiwania była zawarta w docelowym dokumencie JSON lub 0 w inny sposób. Funkcja JSON_CONTAINS zwraca NULL wartość, jeśli którykolwiek z argumentów to NULL lub jeśli nie zostanie znaleziona określona ścieżka SQL/JSON w dokumencie JSON.
Remarks
Funkcja jest zgodna JSON_CONTAINS z tymi regułami dotyczącymi wyszukiwania, czy wartość znajduje się w dokumencie JSON:
Wartość wyszukiwania skalarnego jest zawarta w skalarnym obiekcie docelowym, jeśli i tylko wtedy, gdy są porównywalne i są równe. Ponieważ typy json mają tylko liczbę JSON lub ciąg lub wartość true/false, możliwe typy skalarne SQL, które można określić jako wartość wyszukiwania, są ograniczone do typów liczbowych SQL, typów znakowych i typu bit.
Typ SQL wartości wyszukiwania skalarnego służy do porównywania z wartością typu json w określonej ścieżce. Różni się to od
JSON_VALUE-bazowego predykatu, gdzie funkcjaJSON_VALUEzawsze zwraca wartość w postaci ciągu znaków.Wartość wyszukiwania tablicy JSON jest zawarta w tablicy docelowej, jeśli i tylko wtedy, gdy każdy element w tablicy wyszukiwania znajduje się w niektórych elementach tablicy docelowej.
Wartość wyszukiwania skalarnego jest zawarta w tablicy docelowej, jeśli i tylko wtedy, gdy wartość wyszukiwania znajduje się w niektórych elementach tablicy docelowej.
Wartość wyszukiwania obiektów JSON jest zawarta w obiekcie docelowym, jeśli i tylko wtedy, gdy każdy klucz/wartość w obiekcie wyszukiwania znajduje się w obiekcie docelowym.
Limitations
Korzystanie z funkcji JSON_CONTAINS ma następujące ograniczenia:
- Typ json nie jest obsługiwany jako wartość wyszukiwania.
- Obiekt JSON lub tablica zwrócona z
JSON_QUERYelementu nie jest obsługiwana jako wartość wyszukiwania. - Parametr ścieżki jest obecnie wymagany.
- Jeśli ścieżka SQL/JSON wskazuje tablicę, symbol wieloznaczny jest wymagany w wyrażeniu ścieżki SQL/JSON. Aktualnie automatyczne rozpakowywanie tablicy odbywa się tylko na pierwszym poziomie.
Obsługa indeksu JSON_CONTAINS JSON obejmuje predykat i następujące operatory:
- Operatory porównania (
=) -
IS [NOT] NULLpredykat (obecnie nieobsługiwany)
Examples
A. Wyszukiwanie wartości całkowitej SQL w ścieżce JSON
W poniższym przykładzie pokazano, jak wyszukać wartość int SQL w tablicy JSON w ścieżce 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;
Oto zestaw wyników.
is_value_found
--------
1
B. Wyszukiwanie wartości ciągu znaków SQL w ścieżce JSON
W poniższym przykładzie pokazano, jak wyszukać wartość ciągu znaków SQL w tablicy JSON w ścieżce 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;
Oto zestaw wyników.
is_value_found
--------
1
C. Wyszukiwanie wartości bitowej SQL w tablicy JSON w ścieżce JSON
W poniższym przykładzie pokazano, jak wyszukać wartość bitową sql w tablicy JSON w ścieżce 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;
Oto zestaw wyników.
is_value_found
--------
1
D. Wyszukiwanie wartości całkowitej SQL zawartej w zagnieżdżonej tablicy JSON
W poniższym przykładzie pokazano, jak wyszukać wartość int SQL zawartą w zagnieżdżonej tablicy JSON w ścieżce 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;
Oto zestaw wyników.
is_value_found
--------
1
E. Wyszukiwanie wartości całkowitej SQL zawartej w obiekcie JSON w tablicy JSON
W poniższym przykładzie pokazano, jak wyszukać wartość int SQL zawartą w obiekcie JSON w tablicy JSON w ścieżce JSON.
DECLARE @j AS JSON = '[{"a": 1}, {"b": 2}, {"c": 3}, {"a": 56}]';
SELECT json_contains(@j, 56, '$[*].a') AS is_value_found;
Oto zestaw wyników.
is_value_found
--------
1
F. Wyszukiwanie wartości ciągu znaków SQL w ścieżce JSON przy użyciu wzorca z symbolami wieloznacznymi
W poniższym przykładzie pokazano, jak wyszukać wartość ciągu znaków SQL przy użyciu wzorca w tablicy JSON w ścieżce 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;
Oto zestaw wyników.
is_value_found
--------
1