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

MariaDB JSON_INSERT() Dijelaskan

Di MariaDB, JSON_INSERT() adalah fungsi bawaan yang memasukkan data ke dalam dokumen JSON, dan mengembalikan hasilnya.

Sintaks

Sintaksnya seperti ini:

JSON_INSERT(json_doc, path, val[, path, val] ...)

Dimana json_doc adalah dokumen JSON, path adalah jalur tempat data harus dimasukkan, dan val adalah nilai yang akan disisipkan pada jalur tersebut.

Contoh

Berikut ini contoh untuk didemonstrasikan.

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

Hasil:

+----------------------------------------------+
| JSON_INSERT(@json_document, '$.type', "Dog") |
+----------------------------------------------+
| {"name": "Wag", "type": "Dog"}               |
+----------------------------------------------+

Di sini saya memasukkan "type": "Dog" ke dalam dokumen.

Dalam hal ini, saya menggunakan $.type sebagai jalan. Oleh karena itu, type adalah kuncinya dan Dog adalah nilainya.

Saat Jalur Sudah Ada

Melewati jalur yang sudah ada di dokumen JSON menghasilkan dokumen asli yang dikembalikan tidak berubah.

Contoh:

SET @json_document = '
    { 
        "name": "Wag"
    }
';
SELECT JSON_INSERT(@json_document, '$.name', "Bark");

Hasil:

+-----------------------------------------------+
| JSON_INSERT(@json_document, '$.name', "Bark") |
+-----------------------------------------------+
| {"name": "Wag"}                               |
+-----------------------------------------------+

Memasukkan Array

Berikut ini contoh penyisipan array ke dalam dokumen JSON:

SET @json_document = '
    { 
        "name" : "Wag"
    }
';
SELECT JSON_INSERT(@json_document, '$.scores', '[ 8, 7, 9 ]');

Hasil:

+--------------------------------------------------------+
| JSON_INSERT(@json_document, '$.scores', '[ 8, 7, 9 ]') |
+--------------------------------------------------------+
| {"name": "Wag", "scores": "[ 8, 7, 9 ]"}               |
+--------------------------------------------------------+

Menambahkan ke Array

Berikut ini contoh penggunaan JSON_INSERT() untuk menambahkan data ke array:

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

Hasil:

+--------------------------------------------------------------+
| JSON_INSERT(@json_document, '$.awards[2]', "Biggest Dog")    |
+--------------------------------------------------------------+
| {"_id": 1, "awards": ["Top Dog", "Best Dog", "Biggest Dog"]} |
+--------------------------------------------------------------+

Namun, meskipun berfungsi dengan baik untuk contoh ini, itu bisa dengan mudah gagal. Misalnya, jika kita mencoba memasukkan nilai di tempat yang berbeda dalam array, itu tidak akan berhasil:

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

Hasil:

+-----------------------------------------------------------+
| JSON_INSERT(@json_document, '$.awards[1]', "Biggest Dog") |
+-----------------------------------------------------------+
| {"_id": 1, "awards": ["Top Dog", "Best Dog"]}             |
+-----------------------------------------------------------+

Untuk menyisipkan nilai ke dalam larik, gunakan JSON_ARRAY_INSERT() fungsi sebagai gantinya.

Selain itu, meskipun kami dapat menambahkan nilai ke array dalam contoh di atas, Anda mungkin lebih baik menggunakan JSON_ARRAY_APPEND() fungsi, karena dirancang khusus untuk tujuan itu.

Objek Bersarang

Berikut ini contoh menyisipkan nilai ke dalam 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"
            }
        }
    }
';
SELECT JSON_INSERT(
    @json_document, 
    '$.details.awards.Sumo 2020',
    'Biggest Dog'
    );

Hasil:

{"_id": 1, "name": "Wag", "details": {"type": "Dog", "weight": 20, "awards": {"Florida Dog Awards": "Top Dog", "New York Marathon": "Fastest Dog", "Sumo 2020": "Biggest Dog"}}}

Mempercantik Hasilnya

Kita dapat menggunakan JSON_DETAILED() berfungsi untuk membuat hasil lebih mudah dibaca:

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

Hasil:

{
    "_id": 1,
    "name": "Wag",
    "details": 
    {
        "type": "Dog",
        "weight": 20,
        "awards": 
        {
            "Florida Dog Awards": "Top Dog",
            "New York Marathon": "Fastest Dog",
            "Sumo 2020": "Biggest Dog"
        }
    }
}

Argumen Null

Jika salah satu dari json_document atau path argumennya adalah NULL , hasilnya adalah NULL :

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

Hasil:

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

Namun, jika value argumennya adalah NULL , kunci ditambahkan pada jalur yang ditentukan, dengan nilai null :

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

Hasil:

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

Jumlah Parameter Salah

Tidak memberikan argumen akan menyebabkan kesalahan:

SELECT JSON_INSERT();

Hasil:

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

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

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

Hasil:

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

Fungsi Serupa

JSON_REPLACE() fungsi dapat memperbarui data yang ada.

JSON_SET() fungsi dapat memperbarui data yang ada dan memasukkan data baru. Jadi JSON_SET() seperti JSON_INSERT() dan JSON_REPLACE() dalam satu fungsi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Atur Bahasa yang digunakan untuk Fungsi Tanggal &Waktu di MariaDB

  2. Grafik Kustom untuk Memantau Sistem MySQL, MariaDB, MongoDB, dan PostgreSQL Anda - Tips &Trik ClusterControl

  3. Pilih Semuanya Sebelum atau Setelah Karakter Tertentu di MariaDB

  4. Panduan untuk Indeks MySQL

  5. Cara Menyebarkan Database Chamilo MariaDB untuk Ketersediaan Tinggi