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

MariaDB JSON_EXISTS() Dijelaskan

Di MariaDB, JSON_EXISTS() adalah fungsi bawaan yang memungkinkan Anda memeriksa apakah ada nilai pada jalur yang ditentukan dalam dokumen JSON.

Ia menerima dokumen JSON sebagai argumen, dan mengembalikan 1 jika jalur ditemukan, dan 0 jika tidak.

Dokumentasi MariaDB menyatakan bahwa fungsi "menentukan apakah nilai JSON yang ditentukan ada dalam data yang diberikan". Namun, fungsi tersebut tidak benar-benar muncul untuk memeriksa nilai yang diberikan. Mungkin lebih akurat untuk mengatakan bahwa itu menentukan apakah jalur yang ditentukan ada, atau ada nilai di jalur yang ditentukan.

Untuk memeriksa apakah nilai yang sebenarnya ada, Anda dapat menggunakan JSON_CONTAINS() fungsi.

Sintaks

Sintaksnya seperti ini:

JSON_EXISTS(json_doc, path) 

Dimana json_doc adalah dokumen JSON dan path adalah jalan untuk menemukan.

Contoh

Berikut ini contoh untuk didemonstrasikan.

SELECT JSON_EXISTS('{ "name": "Wag" }', '$.name'); 

Hasil:

+--------------------------------------------+| JSON_EXISTS('{ "name":"Wag" }', '$.name') |+----------------------------- ----------------+| 1 |+---------------------------------------------------+ 

Dalam hal ini, path ditemukan dan hasilnya adalah 1 .

Jika jalur tidak ditemukan, hasilnya adalah 0 , seperti ini:

SELECT JSON_EXISTS('{ "name": "Wag" }', '$.type'); 

Hasil:

+--------------------------------------------+| JSON_EXISTS('{ "name":"Wag" }', '$.type') |+---------------------------- ----------------+| 0 |+--------------------------------------------+ 

Array

Dalam contoh ini, saya memeriksa keberadaan elemen pada indeks tertentu dari array:

SELECT JSON_EXISTS(
    '{ 
        "name": "Wag", 
        "scores": [ 10, 8, 7 ] 
    }', 
    "$.scores[2]"
    ) AS Result; 

Hasil:

+--------+| Hasil |+--------+| 1 |+--------+

Inilah yang terjadi jika indeks tidak ada dalam larik:

SELECT JSON_EXISTS(
    '{ 
        "name": "Wag", 
        "scores": [ 10, 8, 7 ] 
    }', 
    '$.scores[3]'
    ) AS Result; 

Hasil:

+--------+| Hasil |+--------+| 0 |+--------+

Dokumen JSON Lebih Besar

Berikut adalah contoh yang menggunakan dokumen JSON yang sedikit lebih besar. Di sini, saya memeriksa kunci yang ada di dalam beberapa tingkat penyarangan:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_EXISTS(
    @json_document, 
    '$.details.awards.Sumo 2020'
    ) AS Result; 

Hasil:

+--------+| Hasil |+--------+| 1 |+--------+

Argumen Null

Jika salah satu argumennya adalah NULL , hasilnya adalah NULL :

SELECT 
    JSON_EXISTS(null, '$.a'),
    JSON_EXISTS('{ "a": 1 }', null); 

Hasil:

+--------------------------+------------------- --------------+| JSON_EXISTS(null, '$.a') | JSON_EXISTS('{ "a":1 }', null) |+--------------------------+------- --------------------------+| NULL | NULL |+--------------------------+-------------------- -------------+

JSON tidak valid

Melewati hasil JSON yang tidak valid dalam NULL :

SELECT JSON_EXISTS('{1}', '$.a'); 

Hasil:

+---------------------------+| JSON_EXISTS('{1}', '$.a') |+---------------------------+| NULL |+-----------------------+

Jumlah Parameter Salah

Tidak memberikan argumen akan menyebabkan kesalahan:

SELECT JSON_EXISTS(); 

Hasil:

ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'JSON_EXISTS'

Sama halnya jika Anda memberikan terlalu banyak argumen:

SELECT JSON_EXISTS('{"a": 1}', '$.a', 3); 

Hasil:

ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'JSON_EXISTS'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana UPPER() Bekerja di MariaDB

  2. Bagaimana FROM_DAYS() Bekerja di MariaDB

  3. Bagaimana CAST() Bekerja di MariaDB

  4. Menginstal MariaDB 10.1 di Debian Jessie dan Menjalankan Berbagai Kueri MariaDB

  5. Buat Tabel Hanya jika Tidak Ada di MariaDB