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

MariaDB JSON_VALUE() Dijelaskan

Di MariaDB, JSON_VALUE() adalah fungsi bawaan yang mengembalikan nilai skalar dari dokumen JSON. Lebih khusus lagi, ini mengembalikan skalar yang ditentukan oleh jalur yang disediakan.

Sintaks

Sintaksnya seperti ini:

JSON_VALUE(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 = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_VALUE(@json_document, '$.name'); 

Hasil:

+--------------------------------------+| JSON_VALUE(@json_document, '$.name') |+------------------------------------- -+| Wag |+--------------------------------------+

Jalur Tidak Ada

Melewati jalur yang tidak ada di dokumen JSON menghasilkan NULL .

Contoh:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_VALUE(@json_document, '$.color'); 

Hasil:

+---------------------------------------+| JSON_VALUE(@json_document, '$.color') |+------------------------------------- --+| NULL |+---------------------------------------+

Array

Berikut ini contoh pengembalian data dari array:

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

Hasil:

+-------------------------------------------+| JSON_VALUE(@json_document, '$.awards[1]') |+---------------------------------- ---------+| Anjing Terbaik |+-------------------------------------------+ 

Array berbasis nol, jadi $.awards[1] mengekstrak elemen kedua dari awards larik.

Objek Bersarang

Berikut ini contoh mendapatkan nilai dari objek yang bersarang di dalam objek lain:

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_VALUE(
    @json_document, 
    '$.details.awards.Florida Dog Awards'
    ) AS Result; 

Hasil:

+---------+| Hasil |+---------+| Anjing Teratas |+---------+

Nilai Nonskalar

Mencoba mengembalikan nilai nonskalar (misalnya objek atau larik) mengembalikan NULL .

Contoh:

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

Hasil:

+--------+| Hasil |+--------+| NULL |+--------+

Untuk mengembalikan nilai nonskalar, gunakan JSON_QUERY() fungsi atau JSON_EXTRACT() fungsi.

Argumen Null

Jika ada argumen NULL , hasilnya adalah NULL :

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

Hasil:

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

Jumlah Parameter Salah

Tidak memberikan argumen akan menyebabkan kesalahan:

SELECT JSON_VALUE(); 

Hasil:

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

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

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

Hasil:

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

  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 Menggunakan Mekanisme Failover dari MaxScale

  2. Dasar-dasar Enkripsi Database Server MariaDB

  3. Pengguna Baru dan Manajemen LDAP di ClusterControl 1.8.2

  4. Perbaiki "ERROR 1054 (42S22):Kolom tidak dikenal 'colname' di 'order clause' di MariaDB

  5. Bagaimana UNHEX() Bekerja di MariaDB