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

MariaDB JSON_QUERY() Dijelaskan

Di MariaDB, JSON_QUERY() adalah fungsi bawaan yang mengembalikan objek atau larik dari dokumen JSON, berdasarkan jalur yang disediakan.

Ini mirip dengan JSON_VALUE() fungsi, kecuali mengembalikan objek atau larik alih-alih skalar (JSON_VALUE() mengembalikan skalar).

Sintaks

Sintaksnya seperti ini:

JSON_QUERY(json_doc, path) 

Dimana json_doc adalah dokumen JSON, dan path adalah jalur di dalam dokumen.

Contoh

Berikut ini contoh untuk didemonstrasikan.

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_QUERY(@json_document, '$.details'); 

Hasil:

{ "type" :"Dog", "weight" :20, "awards" :{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Anjing Tercepat", "Sumo 2020" :"Anjing Terbesar" }}

Kita dapat menggunakan notasi titik untuk turun ke objek bersarang berikutnya:

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_QUERY(@json_document, '$.details.awards'); 

Hasil:

{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Anjing Tercepat", "Sumo 2020" :"Anjing Terbesar"}

Array

Berikut ini contoh mengembalikan array:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_QUERY(@json_document, '$.awards'); 

Hasil:

+------------------------------------------+| JSON_QUERY(@json_document, '$.awards') |+------------------------------------- -----+| [ "Anjing Teratas", "Anjing Terbaik", "Anjing Terbesar" ] |+-------------------------------- ----------+

Jika Anda ingin mengembalikan elemen array yang sebenarnya, coba JSON_VALUE() fungsi.

Jalur Tidak Ada

Melewati jalur yang tidak ada di dokumen JSON menghasilkan NULL .

Contoh:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_QUERY(@json_document, '$.type'); 

Hasil:

+--------------------------------------+| JSON_QUERY(@json_document, '$.type') |+------------------------------------- -+| NULL |+----------------------------------+

Nilai Skalar

Mencoba mengembalikan nilai skalar akan mengembalikan NULL .

Contoh:

SELECT JSON_QUERY('{ "weight": 10 }', '$.weight'); 

Hasil:

+--------------------------------------------+| JSON_QUERY('{ "berat":10 }', '$.berat') |+------------------------------ --------------+| NULL |+--------------------------------------------+ 

Untuk mengembalikan nilai skalar, gunakan JSON_VALUE() fungsi.

Argumen Null

Jika ada argumen NULL , hasilnya adalah NULL :

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

Hasil:

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

Jumlah Parameter Salah

Tidak memberikan argumen akan menyebabkan kesalahan:

SELECT JSON_QUERY(); 

Hasil:

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

Sama halnya ketika Anda memberikan argumen yang terlalu sedikit atau terlalu banyak:

SELECT JSON_QUERY('{ "a": 1}'); 

Hasil:

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

  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 Migrasi dari Oracle DB ke MariaDB

  2. String Format Tanggal MariaDB

  3. Apa yang Baru di MariaDB Cluster 10.4

  4. Bagaimana UTC_TIME() Bekerja di MariaDB

  5. Failover Tingkat Lanjut Menggunakan Kait Skrip Post/pra