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

JSON_CONTAINS() Contoh di MySQL

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 |
+--------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menggabungkan String di MySQL dengan CONCAT()

  2. Mempercepat dump dan impor mysql

  3. Cara Menggunakan Coalesce di MySQL

  4. Kesalahan saat mengganti nama kolom di MySQL

  5. Bagaimana cara lag kolom di MySQL?