Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2025 (17.x)
Mencari nilai SQL dalam jalur dalam dokumen JSON.
Note
Fungsi ini JSON_CONTAINS saat ini dalam pratinjau dan hanya tersedia di SQL Server 2025 (17.x).
Syntax
JSON_CONTAINS( target_expression , search_value_expression [ , path_expression ] [ , search_mode ] )
Arguments
target_expression
Ekspresi yang mengembalikan dokumen JSON target untuk dicari. Nilainya bisa berupa jenis json atau nilai string karakter yang berisi dokumen JSON.
search_value_expression
Ekspresi yang mengembalikan nilai skalar SQL atau nilai jenis json untuk dicari dalam dokumen SQL/JSON yang ditentukan.
path
Jalur SQL/JSON yang menentukan target pencarian dalam dokumen JSON. Parameter ini bersifat opsional.
Anda dapat memberikan variabel sebagai nilai jalur. Jalur JSON dapat menentukan mode laks atau ketat untuk penguraian. Jika Anda tidak menentukan mode penguraian, mode lax adalah default. Untuk informasi selengkapnya, lihat Ekspresi Jalur JSON di Mesin Database SQL.
Nilai default untuk jalur adalah $. Akibatnya, jika Anda tidak memberikan nilai untuk jalur, JSON_CONTAINS cari nilai di seluruh dokumen JSON.
Jika format jalur tidak valid, JSON_CONTAINS mengembalikan kesalahan.
search_mode
Menunjukkan apakah mode pencarian untuk nilai harus menggunakan kesetaraan atau semantik predikat LIKE. Parameter ini hanya berlaku ketika search_value_expression adalah nilai string karakter. Nilai default untuk search_mode adalah 0, yang menunjukkan semantik predikat kesetaraan. Jika search_mode adalah 1, maka menunjukkan bahwa semantik predikat LIKE harus digunakan.
Mengembalikan nilai
Mengembalikan nilai int dari 0, , 1atau NULL. Nilai 1 menunjukkan bahwa nilai pencarian yang ditentukan terkandung dalam dokumen JSON target, atau 0 sebaliknya. Fungsi mengembalikan JSON_CONTAINSNULL jika salah satu argumen adalah NULL, atau jika jalur SQL/JSON yang ditentukan tidak ditemukan dalam dokumen JSON.
Remarks
Fungsi ini JSON_CONTAINS mengikuti aturan ini untuk mencari apakah nilai terkandung dalam dokumen JSON:
Nilai pencarian skalar terkandung dalam skalar target jika dan hanya jika sebanding dan sama. Karena jenis json hanya memiliki angka atau string JSON atau nilai true/false, kemungkinan jenis skalar SQL yang dapat ditentukan karena nilai pencarian terbatas pada jenis numerik SQL, jenis string karakter, dan jenis bit .
Jenis SQL dari nilai pencarian skalar digunakan untuk melakukan perbandingan dengan nilai jenis json di jalur yang ditentukan. Ini berbeda dari predikat berbasis
JSON_VALUEdi mana fungsiJSON_VALUEselalu mengembalikan nilai string karakter.Nilai pencarian array JSON terkandung dalam array target jika dan hanya jika setiap elemen dalam array pencarian terkandung dalam beberapa elemen array target.
Nilai pencarian skalar terkandung dalam array target jika dan hanya jika nilai pencarian terkandung dalam beberapa elemen array target.
Nilai pencarian objek JSON terkandung dalam objek target jika dan hanya jika setiap kunci/nilai dalam objek pencarian ditemukan di objek target.
Limitations
Penggunaan fungsi JSON_CONTAINS memiliki batasan sebagai berikut:
- Jenis json tidak didukung sebagai nilai pencarian.
- Objek JSON atau array yang berasal dari
JSON_QUERYtidak didukung sebagai nilai pencarian. - Parameter jalur diperlukan saat ini.
- Jika jalur SQL/JSON menunjuk ke array, karakter pengganti diperlukan dalam ekspresi jalur SQL/JSON. Pelepasan array otomatis saat ini hanya pada tingkat pertama.
Dukungan indeks JSON mencakup JSON_CONTAINS predikat dan operator berikut:
- Operator perbandingan (
=) -
IS [NOT] NULLpredikat (saat ini tidak didukung)
Examples
A. Mencari nilai bilangan bulat SQL di jalur JSON
Contoh berikut menunjukkan cara mencari nilai int SQL dalam array JSON di jalur 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;
Berikut kumpulan hasilnya.
is_value_found
--------
1
B. Mencari nilai string karakter SQL di jalur JSON
Contoh berikut menunjukkan cara mencari nilai string karakter SQL dalam array JSON di jalur 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;
Berikut kumpulan hasilnya.
is_value_found
--------
1
C. Mencari nilai bit SQL dalam array JSON di jalur JSON
Contoh berikut menunjukkan cara mencari nilai bit sql dalam array JSON di jalur 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;
Berikut kumpulan hasilnya.
is_value_found
--------
1
D. Mencari nilai bilangan bulat SQL yang terkandung dalam array JSON berlapis
Contoh berikut menunjukkan cara mencari nilai int SQL yang terkandung dalam array JSON berlapis di jalur 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;
Berikut kumpulan hasilnya.
is_value_found
--------
1
E. Mencari nilai bilangan bulat SQL yang terkandung dalam objek JSON dalam array JSON
Contoh berikut menunjukkan cara mencari nilai int SQL yang terkandung dalam objek JSON dalam array JSON di jalur JSON.
DECLARE @j AS JSON = '[{"a": 1}, {"b": 2}, {"c": 3}, {"a": 56}]';
SELECT json_contains(@j, 56, '$[*].a') AS is_value_found;
Berikut kumpulan hasilnya.
is_value_found
--------
1
F. Mencari nilai string karakter SQL di jalur JSON menggunakan pola kartubebas
Contoh berikut menunjukkan cara mencari nilai string karakter SQL menggunakan pola dalam array JSON di jalur 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;
Berikut kumpulan hasilnya.
is_value_found
--------
1