Di MySQL, JSON_MERGE_PATCH()
function melakukan penggabungan yang sesuai dengan RFC 7396 dari dua atau lebih dokumen JSON, tanpa mempertahankan anggota yang memiliki kunci duplikat.
Anda memberikan dokumen JSON sebagai argumen.
Sintaks
Sintaksnya seperti ini:
JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)
Dimana json_doc
adalah dokumen JSON yang akan digabungkan. Jika ada dokumen yang tidak valid, kesalahan akan muncul.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
SELECT JSON_MERGE_PATCH('{"Name":"Homer"}', '{"Age":39}') Hasil;
Hasil:
+-----------------------------+| Hasil |+----------------------------+| {"Usia":39, "Nama":"Homer"} |+------------------------------+Jadi dalam contoh ini, kami menggabungkan dua objek terpisah menjadi satu objek.
Contoh 2 – Kunci Duplikat
Seperti yang disebutkan, fungsi ini tidak mempertahankan anggota dengan kunci duplikat. Contoh:
SELECT JSON_MERGE_PATCH('{"Name":"Bartholomew"}', '{"Name":"Bart"}') Hasil;Hasil:
+------------------+| Hasil |+------------------+| {"Name":"Bart"} |+------------------+Jadi dalam hal ini, Bart menang.
Jika Anda perlu mempertahankan anggota dengan kunci duplikat, gunakan
JSON_MERGE_PRESERVE()
fungsi sebagai gantinya. Menggunakan fungsi itu untuk contoh ini akan mengubahName
ke dalam larik yang berisiBartholomew
danBart
. Seperti ini:SELECT JSON_MERGE_PRESERVE('{"Name":"Bartholomew"}', '{"Name":"Bart"}') Hasil;Hasil:
+-----------------------------------+| Hasil |+-----------------------------------+| {"Nama":["Bartholomew", "Bart"]} |+--------------------------------- --+Contoh 3 – Banyak Anggota
Berikut contoh lain, tetapi dengan anggota tambahan di objek:
SELECT JSON_MERGE_PATCH('{"Name":"Bartholomew", "Usia":10}', '{"Name":"Bart"}') Hasil;Hasil:
+-----------------------------+| Hasil |+----------------------------+| {"Usia":10, "Nama":"Bart"} |+------------------------------+Jadi, Bart masih menang, dan dia telah bergabung dengan anggota lain dari objek pertama.
Tentu saja, ini juga berlaku sebaliknya – hasilnya sama jika kita menambahkan anggota ekstra ke objek kedua.
SELECT JSON_MERGE_PATCH('{"Name":"Bartholomew"}', '{"Name":"Bart", "Age":10}') Hasil;Hasil:
+-----------------------------+| Hasil |+----------------------------+| {"Usia":10, "Nama":"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_PATCH('{"Name":"Bart"}', '{"Age":10}', '{"Hair Color":"Yellow"}') Hasil;Hasil:
+------------------------------------------------- -------+| Hasil |+----------------------------------------------- ------+| {"Usia":10, "Nama":"Bart", "Warna Rambut":"Kuning"} |+------------------------ -----------------------------+Contoh 5 – Array
Menggabungkan dua larik dengan nama yang sama akan menghasilkan hanya satu larik yang dipertahankan:
SELECT JSON_MERGE_PATCH('{"Hobi":["Trouble", "Mischief"]}', '{"Hobi":["Skateboarding"]}') Hasil;Hasil:
+--------------------------------+| Hasil |+--------------------------------+| {"Hobi":["Skateboard"]} |+--------------------------------+Sekali lagi, Anda dapat menggunakan
JSON_MERGE_PRESERVE()
jika Anda perlu mempertahankan kedua array. Jadi contoh sebelumnya dapat ditulis ulang sebagai berikut:SELECT JSON_MERGE_PRESERVE('{"Hobi":["Trouble", "Mischief"]}', '{"Hobi":["Skateboarding"]}') Hasil;Hasil:
+------------------------------------------------- ---------+| Hasil |+----------------------------------------------- --------+| {"Hobi":["Masalah", "Kenakalan", "Skateboard"]} |+----------------------------- --------------------------+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":{ " Umur":10, "Orang Tua":["Marge", "Homer"] } }';SELECT JSON_MERGE_PATCH(@data1, @data2) Hasil;Hasil:
+------------------------------------------------- -------------------------------------------------- -------------------+| Hasil |+----------------------------------------------- -------------------------------------------------- ------------------+| {"Tersangka":{"Usia":10, "Nama":"Bart", "Hobi":["Skateboard", "Kenakalan"], "Orangtua":["Marge", "Homer"]}} | +------------------------------------------------- -------------------------------------------------- ----------------+Untuk aturan pasti tentang bagaimana fungsi ini melakukan penggabungan, lihat dokumentasi MySQL.