Di MySQL, JSON_REPLACE()
fungsi menggantikan nilai dalam dokumen JSON dan mengembalikan hasilnya.
Anda memberikan dokumen JSON sebagai argumen pertama, diikuti dengan jalur untuk mengganti data di, diikuti dengan nilai untuk menggantikan nilai yang ada.
Anda dapat mengganti data di beberapa tempat dalam dokumen jika diperlukan. Untuk melakukannya, cukup sediakan beberapa pasangan jalur/nilai sesuai kebutuhan.
Sintaks
Sintaksnya seperti ini:
JSON_REPLACE(json_doc, jalur, val[, jalur, val] ...)
Dimana json_doc
adalah dokumen JSON, path
adalah jalur untuk mengganti data di, dan val
adalah nilai baru untuk menggantikan nilai yang ada.
Pasangan jalur/nilai dievaluasi dari kiri ke kanan. Dokumen yang dihasilkan dengan mengevaluasi satu pasangan menjadi nilai baru yang digunakan untuk mengevaluasi pasangan berikutnya.
Jika pasangan jalur/nilai tidak ada dalam dokumen JSON, itu akan diabaikan dan tidak berpengaruh.
Argumen pertama harus berupa dokumen JSON yang valid, jika tidak akan terjadi kesalahan.
Juga, path
argumen harus berupa ekspresi jalur yang valid, dan tidak boleh berisi *
atau **
wildcard, jika tidak akan terjadi kesalahan.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
SELECT JSON_REPLACE('{"a":1, "b":2, "c":3}', '$.b', 9) SEBAGAI 'Hasil';
Hasil:
+--------------------------+| Hasil |+--------------------------+| {"a":1, "b":9, "c":3} |+--------------------------+Dalam hal ini, kami mengganti
b
nilai dengan9
. Ini karena kami menetapkan$.b
sebagai argumen kedua, dan9
sebagai yang ketiga.Ini contoh lain:
SELECT JSON_REPLACE('{"Name":"Bart", "Age":10}', '$.Name', 'Nelson - Ha Ha!') SEBAGAI 'Hasil';Hasil:
+---------------------------------------+| Hasil |+--------------------------------------------------+| {"Usia":10, "Nama":"Nelson - Ha Ha!"} |+----------------------------- -----------+Contoh 2 – Jalur Tidak Ada
Jika Anda menentukan jalur yang tidak ada, tidak ada yang dihapus. Dokumen JSON asli dikembalikan tanpa modifikasi.
SELECT JSON_REPLACE('{"Name":"Homer", "Age":39}', '$.Gender', 'Male') AS 'Result';Hasil:
+-----------------------------+| Hasil |+----------------------------+| {"Usia":39, "Nama":"Homer"} |+------------------------------+Contoh 3 – Array
Berikut ini contoh penggunaan array.
SELECT JSON_REPLACE('[1, 2, 3]', '$[0]', 9) SEBAGAI 'Hasil';Hasil:
+-----------+| Hasil |+------------+| [9, 2, 3] |+-----------+Array menggunakan penomoran berbasis nol, jadi dalam hal ini, elemen pertama diganti.
Berikut contoh array lainnya. Kali ini kita mengganti nilai dalam array bersarang.
SELECT JSON_REPLACE('[1, 2, [3, 4, 5]]', '$[2][1]', 9) SEBAGAI 'Hasil';Hasil:
+-------------------+| Hasil |+-------------------+| [1, 2, [3, 9, 5]] |+-------------------+Contoh 4 – Beberapa Jalur
Anda dapat menentukan lebih dari satu jalur untuk mengganti data di beberapa tempat dalam dokumen JSON.
Contoh dasar:
SELECT JSON_REPLACE('[1, 2, 3, 4, 5]', '$[1]', 9, '$[3]', 22) SEBAGAI 'Hasil';Hasil:
+------------------+| Hasil |+------------------+| [1, 9, 3, 22, 5] |+------------------+Contoh 5 – Dokumen JSON yang Lebih Besar
Berikut ini contoh dengan dokumen JSON (sedikit) lebih besar.
SET @data ='{ "Orang":{ "Nama":"Homer", "Usia":39, "Hobi":["Makan", "Tidur"] } }';SELECT JSON_REPLACE(@data , '$.Person.Name', 'Bart', '$.Person.Age', 10, '$.Person.Hobbies[1]', 'Base Jumping') SEBAGAI 'Hasil';Hasil:
+------------------------------------------------- ----------------------------------+| Hasil |+----------------------------------------------- ----------------------------------+| {"Orang":{"Usia":10, "Nama":"Bart", "Hobi":["Makan", "Base Jumping"]}} |+------------ -------------------------------------------------- ------------------+