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

JSON_SET() – Masukkan atau Perbarui Nilai dalam Dokumen JSON di MySQL

Di MySQL, JSON_SET() fungsi menyisipkan atau memperbarui nilai dalam dokumen JSON dan mengembalikan hasilnya.

Anda memberikan dokumen JSON sebagai argumen pertama, diikuti dengan jalur untuk disisipkan, diikuti dengan nilai yang akan disisipkan. Anda dapat memberikan beberapa pasangan jalur/nilai jika Anda perlu memperbarui beberapa nilai.

Sintaks

Sintaksnya seperti ini:

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

Dimana:

  • json_doc adalah dokumen JSON.
  • path adalah jalur elemen untuk menyisipkan data atau memperbarui nilainya.
  • val adalah nilai baru.

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

Kesalahan terjadi jika argumen pertama bukan dokumen JSON yang valid, atau jika argumen jalur apa pun bukan ekspresi jalur yang valid atau berisi * atau ** karakter pengganti.

Contoh 1 – Masukkan Nilai

Berikut adalah contoh untuk mendemonstrasikan cara menyisipkan nilai menggunakan fungsi ini.

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

Hasil:

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

Dalam hal ini, argumen ke-3 dimasukkan ke dalam array di jalur yang ditentukan. Saya menggunakan $.c untuk jalur dan 3 untuk nilai yang akan dimasukkan. Ini menghasilkan pasangan kunci/nilai "c": 3 .

Ini contoh lain:

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

Hasil:

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

Contoh 2 – Perbarui Nilai

Contoh sebelumnya memasukkan nilai. Contoh ini memperbarui nilai yang ada.

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

Hasil:

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

Ini contoh lain:

SELECT JSON_SET('{"Name":"Homer", "Gender":"Male"}', '$.Name', "Bart") SEBAGAI 'Hasil';

Hasil:

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

Contoh 3 – Array

Anda dapat menyisipkan nilai ke dalam larik dengan menggunakan jalur melewati akhir larik yang ada. Contoh:

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

Hasil:

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

Namun, jika Anda menggunakan jalur yang sudah ada dalam larik, nilainya akan diperbarui:

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

Hasil:

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

Jika nilai yang ada bukan array, maka akan dibungkus otomatis sebagai array, kemudian diperluas dengan nilai baru. Contoh:

SELECT JSON_SET('{"a":1, "b":2}', '$[2]', 3) SEBAGAI 'Hasil';

Hasil:

+------------------------+| Hasil |+-----------------------+| [{"a":1, "b":2}, 3] |+-----------------------+

Contoh 4 – Beberapa Nilai

Anda dapat memasukkan/memperbarui beberapa nilai sekaligus. Cukup tambahkan setiap pasangan kunci/nilai yang dipisahkan dengan koma. Contoh:

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

Hasil:

+-------------------------------+| Hasil |+-------------------------------+| {"a":9, "b":2, "c":"Bart"} |+--------------------------- ----+

Contoh 5 – Dokumen JSON yang Lebih Besar

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

SET @data ='{ "Orang":{ "Nama":"Homer", "Hobi":["Makan", "Tidur"] } }';SELECT JSON_SET(@data, '$.Person. Name', 'Bart', '$.Person.Hobbies[1]', "Mischief") SEBAGAI 'Hasil';

Hasil:

+------------------------------------------------- -------------------+| Hasil |+----------------------------------------------- ------------------+| {"Orang":{"Nama":"Bart", "Hobi":["Makan", "Kenakalan"]}} |+------------------- ----------------------------------------------+

Lihat juga JSON_INSERT() untuk memasukkan nilai tanpa mengganti nilai yang ada, dan JSON_REPLACE() untuk mengganti hanya nilai yang ada.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MAKEDATE() Contoh – MySQL

  2. menampilkan data dari database SQL ke tabel php/html

  3. Kekurangan mysql_real_escape_string?

  4. PHP PDO dan MySQLi

  5. Python 3.4.0 dengan database MySQL