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 dari JSON_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.