Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

JSON_MERGE_PATCH() – Lakukan Penggabungan Dokumen JSON yang Sesuai dengan RFC 7396 di MySQL

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 mengubah Name ke dalam larik yang berisi Bartholomew dan Bart . 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Banyak Hitungan Dengan Satu Permintaan di MySQL

  2. Mendapatkan waktu tunggu Lock terlampaui; coba mulai ulang transaksi meskipun saya tidak menggunakan transaksi

  3. Kiat untuk Bermigrasi dari Basis Data Proprietary ke Open Source

  4. DATABASE() – Dapatkan Nama Database Saat Ini di MySQL

  5. MySQL sekarang() +1 hari