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

MariaDB JSON_REPLACE() Dijelaskan

Di MariaDB, JSON_REPLACE() adalah fungsi bawaan yang menggantikan nilai yang ada dalam dokumen JSON dan mengembalikan hasilnya.

Sintaks

Sintaksnya seperti ini:

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

Contoh

Berikut ini contoh untuk didemonstrasikan.

SET @json = '{ "name" : "Wag", "type" : "Cat" }';

SELECT JSON_REPLACE(@json, '$.type', 'Dog');

Hasil:

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

Dalam hal ini saya mengganti nilai Cat dengan Dog .

Elemen Array

Untuk mengganti elemen array, tentukan indeks elemen:

SET @json = '{ "name" : "Wag", "scores" : [8, 0, 9] }';

SELECT JSON_REPLACE(@json, '$.scores[1]', 7);

Hasil:

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

Dalam hal ini, elemen array kedua diganti dengan nilai baru. Array berbasis nol, jadi $.scores[1] mengacu pada elemen kedua dalam array.

Beberapa Jalur

Sintaks memungkinkan untuk mengganti nilai di beberapa jalur dengan satu panggilan ke JSON_REPLACE() .

Saat menyediakan beberapa jalur, jalur tersebut dievaluasi dari kiri ke kanan. Artinya, hasil evaluasi sebelumnya digunakan sebagai nilai untuk evaluasi selanjutnya.

Pertama, berikut adalah contoh yang menggantikan beberapa nilai dalam dokumen, berdasarkan kuncinya:

SET @json = '
    { 
        "name" : "Flutter", 
        "type" : "Bird",
        "weight" : 10
    }
';

SELECT JSON_REPLACE(@json, '$.type', 'Bat', '$.weight', 20);

Hasil:

+------------------------------------------------------+
| JSON_REPLACE(@json, '$.type', 'Bat', '$.weight', 20) |
+------------------------------------------------------+
| {"name": "Flutter", "type": "Bat", "weight": 20}     |
+------------------------------------------------------+

Setiap nilai diganti seperti yang diharapkan.

Pada contoh berikutnya kita mengganti beberapa elemen dalam sebuah array:

SET @json = '{ "scores" : [ 0, 1, 2, 3, 4, 5 ] }';

SELECT 
    JSON_REPLACE(
        @json, 
        '$.scores[2]', "a", 
        '$.scores[4]', "b"
    ) AS Result;

Hasil:

+------------------------------------+
| Result                             |
+------------------------------------+
| {"scores": [0, 1, "a", 3, "b", 5]} |
+------------------------------------+

Argumen Null

Jika json_doc atau salah satu path argumennya adalah null , hasilnya adalah NULL . Tetapi jika value argumennya adalah null , maka nilainya diganti menjadi null .

SELECT 
    JSON_REPLACE(null, '$.a', 1) AS a,
    JSON_REPLACE('{"a":1}', null, 1) AS b,
    JSON_REPLACE('{"a":1}', '$.a', null) AS c;

Hasil:

+------+------+-------------+
| a    | b    | c           |
+------+------+-------------+
| NULL | NULL | {"a": null} |
+------+------+-------------+

Dalam contoh berikut, salah satu argumen jalur hilang dari setiap panggilan ke JSON_REPLACE() . Ini menghasilkan NULL dikembalikan untuk kedua panggilan:

SET @json = '{ "name" : "Wag", "type" : "Cat" }';

SELECT 
    JSON_REPLACE(@json, null, 'Bark', '$.type', 'Dog') AS a,
    JSON_REPLACE(@json, '$.name', 'Bark', null, 'Dog') AS b;

Hasil:

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

Jumlah Parameter Salah

Memanggil JSON_REPLACE() tanpa argumen menghasilkan kesalahan:

SELECT JSON_REPLACE();

Hasil:

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

Sama halnya jika tidak cukup argumen yang diberikan:

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

Hasil:

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

Fungsi Serupa

JSON_INSERT() fungsi dapat menyisipkan data baru.

JSON_SET() fungsi dapat menyisipkan data baru dan memperbarui data yang ada. 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. Bagaimana MID() Bekerja di MariaDB

  2. MariaDB JSON_VALID() Dijelaskan

  3. Panduan untuk MariaDB Columnstore untuk Admin MySQL

  4. Bagaimana FIND_IN_SET() Bekerja di MariaDB

  5. Opsi Pencadangan Cloud untuk Database MySQL &MariaDB