Di MySQL, JSON_INSERT()
fungsi memasukkan nilai ke dalam dokumen JSON dan mengembalikan hasilnya.
Anda memberikan dokumen JSON sebagai argumen pertama, diikuti dengan jalur yang akan dimasukkan, diikuti dengan nilai yang akan disisipkan.
Sintaks
Sintaksnya seperti ini:
JSON_INSERT(json_doc, jalur, val[, jalur, val] ...)
Dimana:
json_doc
adalah dokumen JSON.path
adalah jalur elemen yang akan disisipkan nilai baru.val
adalah nilai baru yang akan dimasukkan.
Pasangan jalur-nilai dievaluasi dari kiri ke kanan. Dokumen yang dihasilkan dengan mengevaluasi satu pasangan menjadi nilai baru yang digunakan untuk mengevaluasi pasangan berikutnya.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
SELECT JSON_INSERT('{"a":1, "b":2}', '$.c', 3) SEBAGAI 'Hasil';
Hasil:
+--------------------------+| Hasil |+--------------------------+| {"a":1, "b":2, "c":3} |+--------------------------+Jadi argumen ke-3 dimasukkan ke dalam array di jalur yang ditentukan. Dalam hal ini, saya menggunakan
$.c
untuk jalur dan3
untuk nilai yang akan dimasukkan. Ini menghasilkan pasangan kunci/nilai"c": 3
.Ini contoh lain:
SELECT JSON_INSERT('{"Name":"Homer", "Gender":"Male"}', '$.Age', 39) SEBAGAI 'Hasil';Hasil:
+------------------------------------------------- --+| Hasil |+----------------------------------------------- -+| {"Usia":39, "Nama":"Homer", "Jenis Kelamin":"Pria"} |+------------------------- -----------------------+Contoh 2 – Mencoba Menimpa Jalur yang Ada
Pasangan jalur-nilai untuk jalur yang ada dalam dokumen diabaikan dan tidak menimpa nilai dokumen yang ada.
Jadi jika kita memodifikasi contoh sebelumnya untuk memasukkan nilai pada
Name
(yang sudah ada), tidak ada penyisipan yang dilakukan:SELECT JSON_INSERT('{"Name":"Homer", "Gender":"Male"}', '$.Name', "Bart") SEBAGAI 'Hasil';Hasil:
+-------------------------------------+| Hasil |+------------------------------------------------+| {"Nama":"Homer", "Jenis Kelamin":"Pria"} |+------------------------------- ------+Contoh 3 – Array
Anda dapat menyisipkan nilai ke dalam larik dengan menggunakan jalur melewati akhir larik yang ada. Contoh:
SELECT JSON_INSERT('[1, 2, 3]', '$[3]', 4) SEBAGAI 'Hasil';Hasil:
+-------------+| Hasil |+--------------+| [1, 2, 3, 4] |+--------------+Namun, jika Anda menggunakan jalur yang sudah ada dalam larik, larik akan tetap tidak berubah:
SELECT JSON_INSERT('[1, 2, 3]', '$[1]', 4) SEBAGAI 'Hasil';Hasil:
+-----------+| Hasil |+------------+| [1, 2, 3] |+-----------+Jika nilai yang ada bukan array, maka akan dibungkus otomatis sebagai array, kemudian diperluas dengan nilai baru. Contoh:
SELECT JSON_INSERT('{"a":1, "b":2}', '$[2]', 3) SEBAGAI 'Hasil';Hasil:
+------------------------+| Hasil |+-----------------------+| [{"a":1, "b":2}, 3] |+-----------------------+Tetapi sekali lagi, jika Anda mencoba memasukkan nilai pada jalur yang sudah ada, dokumen JSON tetap tidak berubah:
SELECT JSON_INSERT('{"a":1, "b":2}', '$[0]', 3) SEBAGAI 'Hasil';Hasil:
+------------------+| Hasil |+------------------+| {"a":1, "b":2} |+------------------+Contoh 4 – Dokumen JSON yang Lebih Besar
Berikut ini contoh dengan dokumen JSON (sedikit) lebih besar.
SET @data ='{ "Orang":{ "Nama":"Homer", "Hobi":["Makan", "Tidur"] } }';SELECT JSON_INSERT(@data, '$.Person. Hobi [2]', "Lompat Dasar") SEBAGAI 'Hasil';Hasil:
+------------------------------------------------- ------------------------------------+| Hasil |+----------------------------------------------- -----------------------------------+| {"Orang":{"Nama":"Homer", "Hobi":["Makan", "Tidur", "Base Jumping"]}} |+-------------- -------------------------------------------------- ------------------+Lihat juga
JSON_ARRAY_INSERT()
danJSON_ARRAY_APPEND()
jika Anda perlu menyisipkan atau menambahkan data ke dalam larik JSON.