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

JSON_REPLACE() – Ganti Nilai dalam Dokumen JSON di MySQL

Di MySQL, JSON_REPLACE() fungsi menggantikan nilai dalam dokumen JSON dan mengembalikan hasilnya.

Anda memberikan dokumen JSON sebagai argumen pertama, diikuti dengan jalur untuk mengganti data di, diikuti dengan nilai untuk menggantikan nilai yang ada.

Anda dapat mengganti data di beberapa tempat dalam dokumen jika diperlukan. Untuk melakukannya, cukup sediakan beberapa pasangan jalur/nilai sesuai kebutuhan.

Sintaks

Sintaksnya seperti ini:

JSON_REPLACE(json_doc, jalur, val[, jalur, val] ...)

Dimana json_doc adalah dokumen JSON, path adalah jalur untuk mengganti data di, dan val adalah nilai baru untuk menggantikan nilai yang ada.

Pasangan jalur/nilai dievaluasi dari kiri ke kanan. Dokumen yang dihasilkan dengan mengevaluasi satu pasangan menjadi nilai baru yang digunakan untuk mengevaluasi pasangan berikutnya.

Jika pasangan jalur/nilai tidak ada dalam dokumen JSON, itu akan diabaikan dan tidak berpengaruh.

Argumen pertama harus berupa dokumen JSON yang valid, jika tidak akan terjadi kesalahan.

Juga, path argumen harus berupa ekspresi jalur yang valid, dan tidak boleh berisi * atau ** wildcard, jika tidak akan terjadi kesalahan.

Contoh 1 – Penggunaan Dasar

Berikut ini contoh untuk didemonstrasikan.

SELECT JSON_REPLACE('{"a":1, "b":2, "c":3}', '$.b', 9) SEBAGAI 'Hasil';

Hasil:

+--------------------------+| Hasil |+--------------------------+| {"a":1, "b":9, "c":3} |+--------------------------+ 

Dalam hal ini, kami mengganti b nilai dengan 9 . Ini karena kami menetapkan $.b sebagai argumen kedua, dan 9 sebagai yang ketiga.

Ini contoh lain:

SELECT JSON_REPLACE('{"Name":"Bart", "Age":10}', '$.Name', 'Nelson - Ha Ha!') SEBAGAI 'Hasil';

Hasil:

+---------------------------------------+| Hasil |+--------------------------------------------------+| {"Usia":10, "Nama":"Nelson - Ha Ha!"} |+----------------------------- -----------+

Contoh 2 – Jalur Tidak Ada

Jika Anda menentukan jalur yang tidak ada, tidak ada yang dihapus. Dokumen JSON asli dikembalikan tanpa modifikasi.

SELECT JSON_REPLACE('{"Name":"Homer", "Age":39}', '$.Gender', 'Male') AS 'Result';

Hasil:

+-----------------------------+| Hasil |+----------------------------+| {"Usia":39, "Nama":"Homer"} |+------------------------------+ 

Contoh 3 – Array

Berikut ini contoh penggunaan array.

SELECT JSON_REPLACE('[1, 2, 3]', '$[0]', 9) SEBAGAI 'Hasil';

Hasil:

+-----------+| Hasil |+------------+| [9, 2, 3] |+-----------+

Array menggunakan penomoran berbasis nol, jadi dalam hal ini, elemen pertama diganti.

Berikut contoh array lainnya. Kali ini kita mengganti nilai dalam array bersarang.

SELECT JSON_REPLACE('[1, 2, [3, 4, 5]]', '$[2][1]', 9) SEBAGAI 'Hasil';

Hasil:

+-------------------+| Hasil |+-------------------+| [1, 2, [3, 9, 5]] |+-------------------+

Contoh 4 – Beberapa Jalur

Anda dapat menentukan lebih dari satu jalur untuk mengganti data di beberapa tempat dalam dokumen JSON.

Contoh dasar:

SELECT JSON_REPLACE('[1, 2, 3, 4, 5]', '$[1]', 9, '$[3]', 22) SEBAGAI 'Hasil';

Hasil:

+------------------+| Hasil |+------------------+| [1, 9, 3, 22, 5] |+------------------+

Contoh 5 – Dokumen JSON yang Lebih Besar

Berikut ini contoh dengan dokumen JSON (sedikit) lebih besar.

SET @data ='{ "Orang":{ "Nama":"Homer", "Usia":39, "Hobi":["Makan", "Tidur"] } }';SELECT JSON_REPLACE(@data , '$.Person.Name', 'Bart', '$.Person.Age', 10, '$.Person.Hobbies[1]', 'Base Jumping') SEBAGAI 'Hasil';

Hasil:

+------------------------------------------------- ----------------------------------+| Hasil |+----------------------------------------------- ----------------------------------+| {"Orang":{"Usia":10, "Nama":"Bart", "Hobi":["Makan", "Base Jumping"]}} |+------------ -------------------------------------------------- ------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GALAT 2002 (HY000):Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (2)

  2. SQLSTATE[HY000] [1045] Akses ditolak untuk 'username'@'localhost' pengguna menggunakan CakePHP

  3. Fungsi MySQL ATAN2() – Mengembalikan Tangen Busur dari 2 Nilai

  4. Replikasi MySQL:Transaksi Salah dalam Replikasi Berbasis GTID

  5. Instal Web Server di Windows XP dengan Apache2, PHP5 dan MySQL4 – Bagian 1