Di MySQL, JSON_CONTAINS_PATH()
fungsi menguji apakah jalur tertentu ditemukan atau tidak dalam dokumen JSON yang diberikan.
Jika jalur ditemukan, JSON_CONTAINS_PATH()
mengembalikan 1
, jika tidak, ia akan mengembalikan 0
.
Sintaks
Sintaksnya seperti ini:
JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)
Dimana json_doc
adalah dokumen JSON, one_or_all
adalah kata kunci one
atau all
(untuk menunjukkan apakah hanya satu jalur yang perlu ada atau semua jalur harus ada sebelum mengembalikan 1
), dan path
adalah jalur sebenarnya.
Contoh 1 – Penggunaan Dasar
Berikut adalah contoh untuk mendemonstrasikan penggunaan dasar.
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}'; SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a') AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Jalur $.a
ada di dokumen JSON, dan oleh karena itu, hasilnya adalah 1
. Kami menggunakan one
sebagai argumen kedua tetapi dalam kasus ini kita akan mendapatkan hasil yang sama jika kita menetapkan all
.
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}'; SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a') AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Jika kami menentukan jalur yang tidak ada, kami mendapatkan 0
. Contoh:
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}'; SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.z') AS Result;
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Contoh 2 – Beberapa Jalur
Dalam contoh berikut, kami menentukan dua jalur.
Pada contoh pertama, satu jalur ada tetapi yang lain tidak. Tapi karena saya menggunakan one
sebagai argumen kedua, hasilnya positif (karena setidaknya ada satu jalur).
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}'; SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a', '$.z') AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Jika kita mengganti one
ke all
kami mendapatkan hasil negatif.
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}'; SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a', '$.z') AS Result;
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Ini karena all
kata kunci mengharuskan semua jalur harus ada di dokumen JSON sebelum mengembalikan 1
.
Contoh 3 – Notasi Titik
Anda dapat menggunakan notasi titik untuk menunjukkan jalur tertentu dalam dokumen JSON.
SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}'; SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c.d') AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Contoh 4 – Array
Berikut adalah beberapa contoh array.
Contoh pertama mengembalikan hasil positif.
SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}'; SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[0]') AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Contoh berikutnya mengembalikan hasil negatif.
SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}'; SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[3]') AS Result;
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Ini mengembalikan negatif karena array menggunakan penomoran berbasis nol. Oleh karena itu, jalur $.c[3]
mewakili elemen keempat, tetapi array hanya berisi tiga elemen.