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_docadalah dokumen JSON.pathadalah jalur elemen untuk menyisipkan data atau memperbarui nilainya.valadalah 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.