Di MySQL, ada sejumlah fungsi untuk membantu Anda bekerja dengan dokumen JSON. Ini termasuk JSON_SET()
, JSON_INSERT()
, dan JSON_REPLACE()
fungsi.
Ketiga fungsi ini saling terkait, namun sedikit berbeda.
Sintaks
Pertama, inilah sintaks untuk ketiga fungsi:
JSON_SET(json_doc, jalur, val[, jalur, val] ...)JSON_INSERT(json_doc, jalur, val[, jalur, val] ...)JSON_REPLACE(json_doc, jalur, val[, jalur, val] ...)
Jadi ketiga fungsi menerima argumen yang sama. Inilah gunanya argumen ini:
json_doc
adalah dokumen JSON.path
adalah jalur elemen untuk menyisipkan data atau memperbarui nilainya.val
adalah nilai baru.
Perbedaan
Inilah perbedaan antara fungsi-fungsi ini:
JSON_SET()
menggantikan nilai yang ada dan menambahkan nilai yang tidak ada.JSON_INSERT()
menyisipkan nilai tanpa mengganti nilai yang ada.JSON_REPLACE()
hanya menggantikan nilai yang ada.
Jadi pada dasarnya mana yang Anda gunakan bergantung pada apakah Anda memperbarui nilai yang ada atau memasukkan nilai baru (walaupun JSON_SET()
melakukan keduanya).
Contoh 1 – Masukkan Nilai
Berikut adalah contoh untuk menunjukkan perbedaan antara ketiga fungsi ini.
JSON_SET()
Inilah yang terjadi jika kita mencoba memasukkan nilai baru menggunakan JSON_SET()
:
PILIH JSON_SET('{"a":1, "b":2}', '$.c', 3) SEBAGAI 'Hasil';
Hasil:
+--------------------------+| Hasil |+--------------------------+| {"a":1, "b":2, "c":3} |+--------------------------+Jadi itu bekerja dengan sempurna.
JSON_INSERT()
Inilah yang terjadi jika kita mencoba memasukkan nilai baru menggunakan
JSON_INSERT()
:SELECT JSON_INSERT('{"a":1, "b":2}', '$.c', 3) SEBAGAI 'Hasil';Hasil:
+--------------------------+| Hasil |+--------------------------+| {"a":1, "b":2, "c":3} |+--------------------------+Hasil yang sama persis dengan
JSON_SET()
.JSON_REPLACE()
Inilah yang terjadi jika kita mencoba memasukkan nilai baru menggunakan
JSON_REPLACE()
:SELECT JSON_REPLACE('{"a":1, "b":2}', '$.c', 3) SEBAGAI 'Hasil';Hasil:
+------------------+| Hasil |+------------------+| {"a":1, "b":2} |+------------------+Dalam hal ini, nilai baru tidak dimasukkan. Dokumen JSON asli dikembalikan tidak berubah. Ini karena fungsi ini hanya menggantikan nilai yang ada – tidak memasukkan nilai baru.
Contoh 2 – Memperbarui Nilai yang Ada
Sekarang untuk memperbarui nilai yang ada.
JSON_SET()
Inilah yang terjadi jika kami mencoba memperbarui nilai yang ada menggunakan
JSON_SET()
:SELECT JSON_SET('{"a":1, "b":2}', '$.b', 3) SEBAGAI 'Hasil';Hasil:
+------------------+| Hasil |+------------------+| {"a":1, "b":3} |+------------------+Jadi sekali lagi, itu bekerja dengan sempurna. Kami berhasil memperbarui pasangan kunci/nilai kedua dengan nilai baru.
JSON_INSERT()
Inilah yang terjadi jika kami mencoba memperbarui nilai yang ada menggunakan
JSON_INSERT()
:SELECT JSON_INSERT('{"a":1, "b":2}', '$.b', 3) SEBAGAI 'Hasil';Hasil:
+------------------+| Hasil |+------------------+| {"a":1, "b":2} |+------------------+Dalam hal ini nilai yang ada tidak diperbarui. Dokumen JSON dikembalikan tidak berubah. Ini karena
JSON_INSERT()
fungsi hanya memasukkan nilai baru – tidak memperbarui nilai yang sudah ada.JSON_REPLACE()
Inilah yang terjadi jika kami mencoba memperbarui nilai yang ada menggunakan
JSON_REPLACE()
:SELECT JSON_REPLACE('{"a":1, "b":2}', '$.b', 3) SEBAGAI 'Hasil';Hasil:
+------------------+| Hasil |+------------------+| {"a":1, "b":3} |+------------------+Ini diperbarui dengan sempurna.