Di MySQL, JSON_CONTAINS() fungsi menguji apakah nilai yang ditentukan ditemukan atau tidak dalam dokumen JSON yang diberikan atau, secara opsional, pada jalur yang ditentukan dalam dokumen.
Jika nilai ditemukan, JSON_CONTAINS() mengembalikan 1 , jika tidak, ia akan mengembalikan 0 .
Sintaks
Sintaksnya seperti ini:
JSON_CONTAINS(target, candidate[, path])
Fungsi mengembalikan 1 atau 0 tergantung pada apakah candidate yang diberikan Dokumen JSON terkandung dalam target Dokumen JSON, atau—jika path argumen diberikan—apakah kandidat ditemukan di jalur tertentu dalam target.
Contoh 1 – Dua Argumen
Berikut adalah contoh untuk mendemonstrasikan penggunaan dasar tanpa menentukan jalur (yaitu hanya menyediakan dua argumen).
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '{"c": {"d": 3}}';
SELECT JSON_CONTAINS(@doc1, @doc2) AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Perhatikan kurung kurawal di sekitar argumen kedua. Ini diperlukan untuk membuatnya menjadi JSON yang valid. Jika kita menghilangkan kurung kurawal, kita akan mendapatkan kesalahan:
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '"c": {"d": 3}';
SELECT JSON_CONTAINS(@doc1, @doc2) AS Result;
Hasil:
ERROR 3141 (22032): Invalid JSON text in argument 2 to function json_contains: "The document root must not be followed by other values." at position 3.
Contoh 2 – Tiga Argumen
Dalam contoh ini saya menambahkan argumen ketiga, untuk menunjukkan jalur tertentu untuk menemukan argumen kedua dalam argumen pertama.
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '1';
SELECT JSON_CONTAINS(@doc1, @doc2, '$.a') AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Dalam hal ini, argumen kedua ditemukan di argumen pertama di jalur yang ditentukan oleh argumen ketiga.
Jika tidak ditemukan, kami akan berakhir dengan ini:
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '2';
SELECT JSON_CONTAINS(@doc1, @doc2, '$.a') AS Result;
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Contoh 3 – Notasi Titik
Anda dapat menggunakan notasi titik untuk menunjukkan jalur tertentu dalam dokumen JSON.
SET @doc1 = '{"a": 1, "b": 2, "c": {"d": 3}}';
SET @doc2 = '3';
SELECT JSON_CONTAINS(@doc1, @doc2, '$.c.d') AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+