MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

MariaDB JSON_CONTAINS() Dijelaskan

Di MariaDB, JSON_CONTAINS() adalah fungsi bawaan yang memungkinkan Anda mengetahui apakah nilai tertentu ditemukan dalam dokumen JSON yang diberikan, atau pada jalur tertentu di dalam dokumen.

Ini mengembalikan 1 jika memang mengandung nilai, 0 jika tidak, dan NULL jika salah satu argumennya adalah NULL .

Sintaks

Sintaksnya seperti ini:

JSON_CONTAINS(json_doc, val[, path])

Dimana json_doc adalah dokumen JSON, val adalah nilai yang akan ditemukan, dan path nilai opsional yang menentukan jalur dalam dokumen.

Contoh

Berikut ini contoh untuk didemonstrasikan.

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS(@json_document, '{"name": "Wag"}');

Hasil:

+--------------------------------------------------+
| JSON_CONTAINS(@json_document, '{"name": "Wag"}') |
+--------------------------------------------------+
|                                                1 |
+--------------------------------------------------+

Dalam hal ini, ada kecocokan, dan hasilnya adalah 1 .

Pada contoh berikutnya, tidak ada yang cocok:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS(@json_document, '{"name": "Woof"}');

Hasil:

+---------------------------------------------------+
| JSON_CONTAINS(@json_document, '{"name": "Woof"}') |
+---------------------------------------------------+
|                                                 0 |
+---------------------------------------------------+

Perhatikan bahwa nilai diapit oleh kurung kurawal.

Inilah yang terjadi jika argumen kedua tidak valid:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS(@json_document, 'Wag');

Hasil:

+--------------------------------------+
| JSON_CONTAINS(@json_document, 'Wag') |
+--------------------------------------+
|                                 NULL |
+--------------------------------------+
1 row in set, 1 warning (0.000 sec)

Mari kita lihat peringatannya:

SHOW WARNINGS;

Hasil:

+---------+------+-----------------------------------------------------------------------------------+
| Level   | Code | Message                                                                           |
+---------+------+-----------------------------------------------------------------------------------+
| Warning | 4038 | Syntax error in JSON text in argument 2 to function 'json_contains' at position 1 |
+---------+------+-----------------------------------------------------------------------------------+

Tentukan Jalur

Anda dapat secara opsional menggunakan argumen ketiga untuk menentukan jalur.

Contoh:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS(@json_document, 10, '$.weight');

Hasil:

+-----------------------------------------------+
| JSON_CONTAINS(@json_document, 10, '$.weight') |
+-----------------------------------------------+
|                                             1 |
+-----------------------------------------------+

Saat menentukan jalur, saya tidak perlu menggunakan kurung kurawal.

Ini dia yang mencari string:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS(@json_document, '"Wag"', '$.name');

Hasil:

+--------------------------------------------------+
| JSON_CONTAINS(@json_document, '"Wag"', '$.name') |
+--------------------------------------------------+
|                                                1 |
+--------------------------------------------------+

Perhatikan saya menggunakan tanda kutip ganda di dalam tanda kutip tunggal. Jika saya menghilangkan tanda kutip ganda, inilah yang terjadi:

SET @json_document = '{ "name": "Wag", "weight": 10 }';

SELECT JSON_CONTAINS(@json_document, 'Wag', '$.name');

Hasil:

+------------------------------------------------+
| JSON_CONTAINS(@json_document, 'Wag', '$.name') |
+------------------------------------------------+
|                                           NULL |
+------------------------------------------------+
1 row in set, 1 warning (0.000 sec)

Dan mari kita periksa peringatannya:

SHOW WARNINGS;

Hasil:

+---------+------+-----------------------------------------------------------------------------------+
| Level   | Code | Message                                                                           |
+---------+------+-----------------------------------------------------------------------------------+
| Warning | 4038 | Syntax error in JSON text in argument 2 to function 'json_contains' at position 1 |
+---------+------+-----------------------------------------------------------------------------------+

Struktur Bersarang

Berikut adalah contoh yang mencari nilai dalam dokumen bersarang:

SET @json_document = '{ "name": "Wag", "specs": { "weight": 10, "height": 30 } }';

SELECT JSON_CONTAINS(@json_document, 30, '$.specs.height');

Hasil:

+-----------------------------------------------------+
| JSON_CONTAINS(@json_document, 30, '$.specs.height') |
+-----------------------------------------------------+
|                                                   1 |
+-----------------------------------------------------+

Argumen Null

Jika salah satu argumennya adalah NULL , hasilnya adalah NULL :

SET @json_document = '{ "name": "Wag", "weight": 10 }';
SELECT 
    JSON_CONTAINS(null, 10, '$.weight') AS a,
    JSON_CONTAINS(@json_document, null, '$.weight') AS b,
    JSON_CONTAINS(@json_document, 10, null) AS c;

Hasil:

+------+------+------+
| a    | b    | c    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Jumlah Parameter Salah

Tidak memberikan argumen akan menyebabkan kesalahan:

SELECT JSON_CONTAINS();

Hasil:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_CONTAINS'

Sama halnya jika Anda memberikan terlalu banyak argumen:

SELECT JSON_CONTAINS('{ "a": 1}', 1, 2, 3);

Hasil:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_CONTAINS'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilkan Collation di MariaDB

  2. 20 Tips:Siapkan Database Anda untuk Black Friday &Cyber ​​Monday

  3. Bagaimana REPLACE() Bekerja di MariaDB

  4. Membandingkan Penawaran Cloud Cluster Galera:Bagian Kedua Google Cloud Platform (GCP)

  5. MariaDB JSON_VALID() Dijelaskan