Di MySQL, JSON_MERGE_PRESERVE()
fungsi menggabungkan dua atau lebih dokumen JSON dan mengembalikan hasilnya.
Anda memberikan dokumen JSON sebagai argumen.
Fungsi ini ditambahkan di MySQL 8.0.3 sebagai sinonim untuk JSON_MERGE()
, namun, JSON_MERGE()
fungsi sekarang tidak digunakan lagi, dan dapat dihapus pada rilis MySQL mendatang.
Sintaks
Sintaksnya seperti ini:
JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)
Dimana json_doc
adalah dokumen JSON yang akan digabungkan.
Jika ada dokumen yang tidak valid, kesalahan akan muncul.
Jika ada argumen NULL
, fungsi ini mengembalikan NULL
.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
SELECT JSON_MERGE_PRESERVE('{"Name":"Homer"}', '{"Age":39}') Hasil;
Hasil:
+-----------------------------+| Hasil |+----------------------------+| {"Usia":39, "Nama":"Homer"} |+------------------------------+Jadi dalam contoh ini, kami menggabungkan dua objek terpisah menjadi satu objek.
Ini adalah hasil yang sama persis dengan yang kita dapatkan jika kita menggunakan
JSON_MERGE_PATCH()
fungsi. Namun, jika kita mencoba menggabungkan kunci duplikat, kedua fungsi ini akan menghasilkan hasil yang berbeda.Contoh 2 – Kunci Duplikat
Seperti namanya,
JSON_MERGE_PRESERVE()
fungsi mempertahankan anggota dengan kunci duplikat (inilah perbedaannya dariJSON_MERGE_PATCH()
fungsi).SELECT JSON_MERGE_PRESERVE('{"Name":"Bartholomew"}', '{"Name":"Bart"}') Hasil;Hasil:
+-----------------------------------+| Hasil |+-----------------------------------+| {"Nama":["Bartholomew", "Bart"]} |+--------------------------------- --+Jadi dalam kasus ini, sebuah array dibuat dan Bart dan Bartholomew ditambahkan sebagai elemen terpisah dari array tersebut.
Ini berbeda dengan
JSON_MERGE_PATCH()
fungsi, yang melakukan hal berikut:SELECT JSON_MERGE_PATCH('{"Name":"Bartholomew"}', '{"Name":"Bart"}') Hasil;Hasil:
+------------------+| Hasil |+------------------+| {"Name":"Bart"} |+------------------+Contoh 3 – Banyak Anggota
Berikut contoh lain, tetapi dengan anggota tambahan di objek:
SELECT JSON_MERGE_PRESERVE('{"Name":"Bartholomew", "Age":10}', '{"Name":"Bart"}') Hasil;Hasil:
+------------------------------------------------- +| Hasil |+---------------------------------------------+ | {"Usia":10, "Nama":["Bartholomew", "Bart"]} |+--------------------------- -------------------+Ini juga bekerja sebaliknya – hasilnya sama jika kita menambahkan anggota tambahan ke objek kedua.
SELECT JSON_MERGE_PRESERVE('{"Name":"Bartholomew"}', '{"Name":"Bart", "Age":10}') Hasil;Hasil:
+------------------------------------------------- +| Hasil |+---------------------------------------------+ | {"Usia":10, "Nama":["Bartholomew", "Bart"]} |+--------------------------- -------------------+Contoh 4 – Dokumen Lainnya
Anda tidak terbatas hanya untuk menggabungkan dua dokumen. Anda dapat menggabungkan sebanyak yang diperlukan. Berikut ini contoh menggabungkan tiga objek.
SELECT JSON_MERGE_PRESERVE('{"Nama":"Bart"}', '{"Usia":10}', '{"Warna Rambut":"Kuning"}') Hasil;Hasil:
+------------------------------------------------- -------+| Hasil |+----------------------------------------------- ------+| {"Usia":10, "Nama":"Bart", "Warna Rambut":"Kuning"} |+------------------------ -----------------------------+Contoh 5 – Array
Berikut ini contoh menggabungkan dua array dengan nama yang sama:
SELECT JSON_MERGE_PRESERVE('{"Hobi":["Trouble", "Mischief"]}', '{"Hobi":["Skateboarding"]}') Hasil;Hasil:
+------------------------------------------------- ---------+| Hasil |+----------------------------------------------- --------+| {"Hobi":["Masalah", "Kenakalan", "Skateboard"]} |+----------------------------- --------------------------+Ini adalah contoh lain di mana
JSON_MERGE_PATCH()
akan mengembalikan hasil yang berbeda.Jelas, jika array memiliki nama yang berbeda, mereka akan berakhir sebagai array yang terpisah (tetapi dalam dokumen JSON yang sama):
SELECT JSON_MERGE_PRESERVE('{"Hobi":["Trouble", "Mischief"]}', '{"Hobby":["Skateboarding"]}') Hasil;Hasil:
+------------------------------------------------- --------------------+| Hasil |+----------------------------------------------- -------------------+| {"Hobi":["Skateboard"], "Hobi":["Masalah", "Kenakalan"]} |+----------------------- --------------------------------------------------+Contoh 6 – Dokumen JSON yang Lebih Besar
Berikut adalah contoh yang menggabungkan (sedikit) dokumen JSON yang lebih besar.
SET @data1 ='{ "Tersangka":{ "Nama":"Bart", "Hobi":["Skateboard", "Kenakalan"] } }', @data2 ='{ "Tersangka":{ " Usia":10, "Orang Tua":["Marge", "Homer"], "Hobi":["Trouble"] } }';SELECT JSON_MERGE_PRESERVE(@data1, @data2) Hasil;Hasil:
+------------------------------------------------- -------------------------------------------------- ------------------------------+| Hasil |+----------------------------------------------- -------------------------------------------------- -----------------------------+| {"Tersangka":{"Usia":10, "Nama":"Bart", "Hobi":["Skateboard", "Kenakalan", "Masalah"], "Orang Tua":["Marge", "Homer" ]}} |+-------------------------------------------- -------------------------------------------------- -------------------------------+Untuk aturan pasti tentang bagaimana fungsi ini melakukan penggabungan, lihat dokumentasi MySQL.