Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

JSON_CONTAINS_PATH() Contoh di MySQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengikat parameter untuk klausa WHERE IN dengan PDO

  2. Cara mengaktifkan log kueri lambat di MySQL

  3. Membuat Aplikasi Web Dari Awal Menggunakan Python Flask dan MySQL:Bagian 4

  4. Bagaimana saya bisa menggunakan objek PDO dengan benar untuk kueri SELECT berparameter?

  5. Bagaimana cara menggunakan MySQLDB SScursor secara efisien?