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

MariaDB JSON_CONTAINS_PATH() Dijelaskan

Di MariaDB, JSON_CONTAINS_PATH() adalah fungsi bawaan yang menunjukkan apakah dokumen JSON tertentu berisi data pada jalur atau jalur yang ditentukan.

Ini mengembalikan 1 jika dokumen memang berisi data pada jalur yang ditentukan, 0 jika tidak, dan NULL jika salah satu argumennya adalah NULL .

Sintaks

Sintaksnya seperti ini:

JSON_CONTAINS_PATH(json_doc, return_arg, path[, path] ...)

Dimana json_doc adalah dokumen JSON dan path menentukan jalur untuk menemukan data. Beberapa jalur dapat disediakan.

return_arg argumen menentukan bagaimana menangani banyak jalur. Bisa jadi one atau all .

  • one – Fungsi mengembalikan 1 jika setidaknya ada satu jalur dalam dokumen JSON.
  • all – Fungsi mengembalikan 1 hanya jika semua jalur ada dalam dokumen JSON.

Contoh

Berikut ini contoh untuk didemonstrasikan.

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

SELECT JSON_CONTAINS_PATH(@json_document, 'one', '$.name');

Hasil:

+-----------------------------------------------------+
| JSON_CONTAINS_PATH(@json_document, 'one', '$.name') |
+-----------------------------------------------------+
|                                                   1 |
+-----------------------------------------------------+

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

Pada contoh berikut jalurnya tidak ada, dan hasilnya adalah 0 :

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

SELECT JSON_CONTAINS_PATH(@json_document, 'one', '$.type');

Hasil:

+-----------------------------------------------------+
| JSON_CONTAINS_PATH(@json_document, 'one', '$.type') |
+-----------------------------------------------------+
|                                                   0 |
+-----------------------------------------------------+

Beberapa Jalur

Berikut adalah beberapa contoh yang mencari beberapa jalur dalam dokumen:

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

SELECT JSON_CONTAINS_PATH(
        @json_document, 
        'one', 
        '$.type', 
        '$.weight'
        ) AS Result;

Hasil:

+--------+
| Result |
+--------+
|      1 |
+--------+

Dalam contoh ini kami mencari dua jalur. Satu jalan ada dan yang lain tidak. Tapi kami mendapat 1 toh (hasil positif). Ini karena kami menggunakan one sebagai argumen kedua. one menentukan bahwa kita akan mendapatkan 1 jika salah satu jalur ada.

Inilah yang terjadi jika kita menggunakan all sebagai argumen kedua:

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

SELECT JSON_CONTAINS_PATH(
    @json_document, 
    'all', 
    '$.type', 
    '$.weight'
    ) AS Result;

Hasil:

+--------+
| Result |
+--------+
|      0 |
+--------+

Kali ini hasilnya 0 , karena tidak semua jalur ada di dokumen JSON.

Jika kita mengubah jalur yang hilang ($.type ) dengan yang ada, kita mendapatkan hasil yang berbeda:

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

SELECT JSON_CONTAINS_PATH(
    @json_document, 
    'all', 
    '$.name', 
    '$.weight'
    ) AS Result;

Hasil:

+--------+
| Result |
+--------+
|      1 |
+--------+

Array

Berikut adalah contoh yang menguji apakah indeks yang diberikan ada dalam array:

SET @json_document = '
    { 
        "name": "Wag", 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';

SELECT JSON_CONTAINS_PATH(
        @json_document, 
        'one', 
        '$.awards[2]'
        ) AS Result;

Hasil:

+--------+
| Result |
+--------+
|      1 |
+--------+

Dan inilah yang terjadi jika kita meningkatkan indeks menjadi yang tidak ada:

SET @json_document = '
    { 
        "name": "Wag", 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';

SELECT JSON_CONTAINS_PATH(
        @json_document, 
        'one', 
        '$.awards[3]'
        ) AS Result;

Hasil:

+--------+
| Result |
+--------+
|      0 |
+--------+

Struktur Bersarang

Berikut adalah contoh yang mencari jalur dalam dokumen bersarang:

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

SELECT JSON_CONTAINS_PATH(
    @json_document, 
    'one', 
    '$.specs.height'
    ) AS Result;

Hasil:

+--------+
| Result |
+--------+
|      1 |
+--------+

Argumen Null

Jika ada argumen NULL , hasilnya adalah NULL :

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

Hasil:

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

Jumlah Parameter Salah

Tidak memberikan argumen akan menyebabkan kesalahan:

SELECT JSON_CONTAINS_PATH();

Hasil:

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

Hal yang sama terjadi ketika Anda tidak memberikan cukup argumen:

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

SELECT JSON_CONTAINS_PATH(@json_document);

Hasil:

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

  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 Menginstal Lighttpd dengan PHP, MariaDB dan PhpMyAdmin di Ubuntu

  2. MAX() Fungsi di MariaDB

  3. Bagaimana TIMESTAMPADD() Bekerja di MariaDB

  4. Bagaimana Operator LIKE Bekerja di MariaDB

  5. ClusterControl - Manajemen Cadangan Tingkat Lanjut - mariabackup Bagian III