Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2025 (17.x)
JSON belgesindeki bir yolda SQL değeri arar.
Note
Bu JSON_CONTAINS fonksiyon şu anda önizleme aşamasında olup yalnızca SQL Server 2025 (17.x) sürümünde mevcuttur.
Transact-SQL söz dizimi kuralları
Syntax
JSON_CONTAINS( target_expression , search_value_expression [ , path_expression ] [ , search_mode ] )
Arguments
target_expression
Aranacak hedef JSON belgesini döndüren ifade. Değer, JSON belgesi içeren bir json türü veya karakter dizesi değeri olabilir.
search_value_expression
Belirtilen SQL/JSON belgesinde aramak için SQL skaler değeri veya json türü değeri döndüren ifade.
path
JSON belgesindeki arama hedefini belirten bir SQL/JSON yolu. Bu parametre isteğe bağlıdır.
Bir değişkeni yol değeri olarak sağlayabilirsiniz. JSON yolu ayrıştırma için gevşek veya katı mod belirtebilir. Ayrıştırma modunu belirtmezseniz, lax modu varsayılandır. Daha fazla bilgi için bkz. SQL Veritabanı Altyapısı'nda JSON Yol İfadeleri.
Yol için varsayılan değer şeklindedir$. Sonuç olarak, yol için bir değer sağlamazsanız JSON JSON_CONTAINS belgesinin tamamında değeri arar.
Yol biçimi geçerli değilse bir JSON_CONTAINS hata döndürür.
search_mode
Değer için arama modunun bir eşitlik mi yoksa LIKE koşulu semantiği mi kullanması gerektiğini gösterir. Bu parametre yalnızca search_value_expression bir karakter dizesi değeri olduğunda geçerlidir. search_mode için varsayılan değer, eşitlik koşulu semantiğini gösteren 0'dır. search_mode 1 ise LIKE koşulu semantiğinin kullanılması gerektiğini gösterir.
Dönüş değeri
Bir int değeri olarak 0, 1 veya NULL döndürür. değeri 1 , belirtilen arama değerinin hedef JSON belgesinde veya 0 başka bir şekilde bulunduğunu gösterir. İşlev, JSON_CONTAINS bağımsız değişkenlerinden herhangi biri NULL ise veya belirtilen SQL/JSON yolu JSON belgesinde bulunamazsa, NULL değerini döndürür.
Remarks
İşlev, JSON_CONTAINS JSON belgesinde bir değer olup olmadığını aramak için şu kuralları izler:
Skaler arama değeri, yalnızca karşılaştırılabilirse ve eşitse hedef skaler içinde yer alır. JSON türlerinin yalnızca JSON numarası veya dizesi veya true/false değeri olduğundan, arama değeri olarak belirtilebilen olası SQL skaler türleri SQL sayısal türleri, karakter dizesi türleri ve bit türüyle sınırlıdır.
Skaler arama değerinin SQL türü, belirtilen yolda json türü değeriyle karşılaştırma yapmak için kullanılır. Bu,
JSON_VALUEişlevinin her zaman bir karakter dizesi değeri döndürdüğüJSON_VALUEtabanlı koşuldan farklıdır.Bir JSON dizisi arama değeri, yalnızca arama dizisindeki her öğe hedef dizinin bir öğesinde yer alırsa hedef dizide yer alır.
Bir skaler arama değeri, yalnızca arama değeri hedef dizinin bir öğesinde yer alıyorsa hedef dizide bulunur.
Bir JSON nesnesi arama değeri, yalnızca arama nesnesindeki her anahtar/değer hedef nesnede bulunursa hedef nesnede yer alır.
Limitations
işlevinin JSON_CONTAINS kullanılması aşağıdaki sınırlamalara sahiptir:
- Json türü arama değeri olarak desteklenmez.
- öğesinden
JSON_QUERYdöndürülen JSON nesnesi veya dizisi arama değeri olarak desteklenmez. - Path parametresi şu anda gereklidir.
- SQL/JSON yolu bir diziyi işaret ederse, SQL/JSON yol ifadesinde joker karakter gerekir. Otomatik dizi eşlemesi şu anda yalnızca ilk düzeydedir.
JSON dizin desteği koşulunu JSON_CONTAINS ve aşağıdaki işleçleri içerir:
- Karşılaştırma işleçleri (
=) -
IS [NOT] NULLkoşul (şu anda desteklenmiyor)
Examples
A. SQL tamsayı değerini bir JSON yolunda arama
Aşağıdaki örnekte, JSON yolundaki bir JSON dizisinde SQL int değerinin nasıl aranacakları gösterilmektedir.
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;
Sonuç kümesi aşağıdadır.
is_value_found
--------
1
B. JSON yolunda bir SQL karakter dizesi değeri arama
Aşağıdaki örnekte, JSON yolundaki bir JSON dizisinde SQL karakter dizesi değerinin nasıl arandığı gösterilmektedir.
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;
Sonuç kümesi aşağıdadır.
is_value_found
--------
1
C. JSON yolundaki bir JSON dizisinde SQL bit değeri arama
Aşağıdaki örnekte, JSON yolundaki bir JSON dizisinde sql bit değerinin nasıl aranacak olduğu gösterilmektedir.
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;
Sonuç kümesi aşağıdadır.
is_value_found
--------
1
D. İç içe JSON dizisinin içinde yer alan sql tamsayı değerini arama
Aşağıdaki örnekte, bir JSON yolunda iç içe JSON dizisi içinde yer alan bir SQL int değerinin nasıl aranacakları gösterilmektedir.
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;
Sonuç kümesi aşağıdadır.
is_value_found
--------
1
E. JSON dizisindeki bir JSON nesnesinin içinde yer alan SQL tamsayı değerini arama
Aşağıdaki örnekte, JSON yolundaki bir JSON dizisindeki JSON nesnesi içinde yer alan bir SQL int değerinin nasıl aranacakları gösterilmektedir.
DECLARE @j AS JSON = '[{"a": 1}, {"b": 2}, {"c": 3}, {"a": 56}]';
SELECT json_contains(@j, 56, '$[*].a') AS is_value_found;
Sonuç kümesi aşağıdadır.
is_value_found
--------
1
F. Joker karakter deseni kullanarak JSON yolunda SQL karakter dizesi değeri arama
Aşağıdaki örnekte, JSON yolundaki bir JSON dizisindeki bir desen kullanılarak SQL karakter dizesi değerinin nasıl arandığı gösterilmektedir.
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;
Sonuç kümesi aşağıdadır.
is_value_found
--------
1
İlgili içerik
- SQL Veritabanı Altyapısında JSON Yol İfadeleri
- SQL Server içindeki JSON verileri