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

JSON_REMOVE() – Hapus Data dari Dokumen JSON di MySQL

Di MySQL, JSON_REMOVE() fungsi menghapus data dari dokumen JSON dan mengembalikan hasilnya.

Anda memberikan dokumen JSON sebagai argumen pertama, diikuti dengan jalur untuk menghapus data. Anda dapat memberikan beberapa jalur jika diperlukan.

Sintaks

Sintaksnya seperti ini:

JSON_REMOVE(json_doc, path[, path] ...)

Dimana json_doc adalah dokumen JSON, dan path adalah jalur untuk menghapus data.

path argumen dievaluasi dari kiri ke kanan. Dokumen yang dihasilkan dengan mengevaluasi satu jalur menjadi nilai baru yang digunakan untuk mengevaluasi jalur berikutnya.

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 $ atau berisi * atau ** wildcard, jika tidak akan terjadi kesalahan.

Contoh 1 – Penggunaan Dasar

Berikut ini contoh untuk didemonstrasikan.

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

Hasil:

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

Dalam hal ini, kami menghapus pasangan kunci/nilai dengan kunci b . Ini karena kami menetapkan $.b sebagai argumen kedua.

Ini contoh lain:

SELECT JSON_REMOVE('{"Name":"Homer", "Gender":"Male", "Age":39}', '$.Age') SEBAGAI 'Hasil';

Hasil:

+-------------------------------------+| Hasil |+------------------------------------------------+| {"Nama":"Homer", "Jenis Kelamin":"Pria"} |+------------------------------- ------+

Contoh 2 – Jalur Tidak Ada

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

SELECT JSON_REMOVE('{"Name":"Homer", "Age":39}', '$.Gender') SEBAGAI 'Hasil';

Hasil:

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

Contoh 3 – Array

Berikut ini contoh penggunaan array.

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

Hasil:

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

Array menggunakan penomoran berbasis nol, jadi dalam hal ini, elemen pertama dihapus dari array.

Berikut contoh array lainnya. Kali ini kami menghapus nilai dari array bersarang.

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

Hasil:

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

Contoh 4 – Beberapa Jalur

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

Contoh dasar:

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

Hasil:

+-----------+| Hasil |+------------+| [1, 3, 4] |+-----------+

Seperti disebutkan, path argumen dievaluasi dari kiri ke kanan, dan dokumen yang dihasilkan dengan mengevaluasi satu jalur menjadi nilai baru yang digunakan untuk mengevaluasi jalur berikutnya.

Oleh karena itu, dalam contoh ini, argumen jalur ke-2 menghapus nilai yang berbeda dengan nilai yang akan dihapus seandainya itu menjadi satu-satunya argumen jalur. Jika itu satu-satunya argumen jalur, itu akan menghapus 4 .

Inilah yang saya maksud:

SELECT JSON_REMOVE('[1, 2, 3, 4, 5]', '$[3]') SEBAGAI 'Satu Jalur', JSON_REMOVE('[1, 2, 3, 4, 5]', ' $[1]', '$[3]') SEBAGAI 'Dua Jalur';

Hasil:

+-------------+------------+| Satu Jalan | Dua Jalur |+--------------+-----------+| [1, 2, 3, 5] | [1, 3, 4] |+--------------+-----------+

Jadi Anda bisa melihatnya saat kita menggunakan $[3] sebagai satu-satunya jalan, ia menghapus 4 dari larik. Tetapi ketika kami menggunakannya sebagai jalur ke-2, itu menghapus 5 (dan 4 dibiarkan tidak tersentuh).

Contoh lain, kali ini menghapus nilai dari larik, dan larik bersarang:

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

Hasil:

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

Jadi sekali lagi, meskipun array berada pada posisi 2 dalam dokumen asli, nilai jalur pertama ($[0] ) memotong larik luar, dan larik dalam berubah ke posisi 1 .

Jika ini membuat kepala Anda berputar, Anda selalu dapat menukar argumen jalur, sehingga nilai paling kanan dihapus terlebih dahulu. Dengan begitu, ini tidak akan memengaruhi posisi nilai paling kiri, dan oleh karena itu, Anda dapat menentukan jalur berdasarkan dokumen JSON asli.

Jadi kita bisa mengubah kode sebelumnya menjadi berikut, dan mendapatkan hasil yang sama:

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

Hasil:

+-------------+| Hasil |+-------------+| [2, [3, 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", "Base Jumping"] } }'; PILIH JSON_REMOVE(@data, '$.Person.Age', '$.Person.Hobbies[2]') SEBAGAI 'Hasil';

Hasil:

+------------------------------------------------- --------------------+| Hasil |+----------------------------------------------- -------------------+| {"Orang":{"Nama":"Homer", "Hobi":["Makan", "Tidur"]}} |+------------------- -----------------------------------------------+ 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql:Pesan dengan suka?

  2. Pernyataan yang disiapkan PHP PDO

  3. Cara Instal MySQL 8.0 di CentOS 8 / RHEL 8

  4. Cara Menduplikasi Database menggunakan phpMyAdmin

  5. Nomor parameter tidak valid:parameter tidak ditentukan Memasukkan data