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

JSON_MERGE_PRESERVE() – Menggabungkan Beberapa Dokumen JSON di MySQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri dari dua tabel dalam laporan

  2. Cara Mengembalikan Posisi Argumen dalam Daftar Argumen di MySQL

  3. PILIH * DI MANA TIDAK ADA

  4. Bagaimana mengubah ukuran max_allowed_packet

  5. Contoh Pernyataan JDBC – Sisipkan Batch, Perbarui, Hapus