SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

JSON_INSERT() vs JSON_SET() vs JSON_REPLACE() di SQLite

SQLite menyediakan beberapa fungsi untuk menyisipkan, mengatur, dan mengganti nilai dalam dokumen JSON. Secara khusus, ini menyediakan json_insert() , json_set() , dan json_replace() .

Fungsi-fungsi ini melakukan tugas serupa, dan terkadang Anda dapat menggunakannya secara bergantian hingga titik tertentu.

Tapi pasti ada perbedaan yang jelas antara masing-masing fungsi.

Perbedaan

Tabel berikut menguraikan perbedaan antara fungsi-fungsi ini:

Fungsi Timpa jika sudah ada? Buat jika tidak ada?
json_insert() Tidak Ya
json_replace() Ya Tidak
json_set() Ya Ya

Jadi perbedaan antara fungsi-fungsi ini adalah bagaimana mereka menangani kunci/nilai yang ada dan tidak ada.

Contoh

Berikut adalah beberapa contoh sederhana untuk menunjukkan bagaimana setiap fungsi menangani kunci/nilai yang ada dan tidak ada.

Saat Kunci Sudah Ada

Berikut adalah cara setiap fungsi menangani pembaruan kunci yang sudah ada:

SELECT 
    json_insert('{ "a" : 1 }', '$.a', 2) AS json_insert,
    json_replace('{ "a" : 1 }', '$.a', 2) AS json_replace,
    json_set('{ "a" : 1 }', '$.a', 2) AS json_set; 

Hasil:

+-------------+--------------+----------+| json_insert | json_replace | json_set |+-------------+--------------+----------+| {"a":1} | {"a":2} | {"a":2} |+-------------+--------------+----------+ 

Kita dapat melihat bahwa json_insert() tidak memperbarui apa pun, tetapi dua fungsi lainnya melakukannya.

Sama halnya dengan array:

SELECT 
    json_insert('[ 1, 2, 3 ]', '$[1]', 4) AS json_insert,
    json_replace('[ 1, 2, 3 ]', '$[1]', 4) AS json_replace,
    json_set('[ 1, 2, 3 ]', '$[1]', 4) AS json_set; 

Hasil:

+-------------+--------------+----------+| json_insert | json_replace | json_set |+-------------+--------------+----------+| [1,2,3] | [1,4,3] | [1,4,3] |+-------------+--------------+----------+ 

Saat Kunci Tidak Ada

Inilah yang terjadi jika kunci tidak ada:

SELECT 
    json_insert('{ "a" : 1 }', '$.b', 2) AS json_insert,
    json_replace('{ "a" : 1 }', '$.b', 2) AS json_replace,
    json_set('{ "a" : 1 }', '$.b', 2) AS json_set; 

Hasil:

+---------------+-------------+--------------- +| json_insert | json_replace | json_set |+---------------+--------------+---------------+ | {"a":1,"b":2} | {"a":1} | {"a":1,"b":2} |+---------------+--------------+---- -----------+

Kita dapat melihat bahwa json_replace() tidak memasukkan pasangan kunci/nilai baru, tetapi dua fungsi lainnya melakukannya.

Kesepakatan yang sama dengan array:

SELECT 
    json_insert('[ 1, 2, 3 ]', '$[3]', 4) AS json_insert,
    json_replace('[ 1, 2, 3 ]', '$[3]', 4) AS json_replace,
    json_set('[ 1, 2, 3 ]', '$[3]', 4) AS json_set; 

Hasil:

+-------------+--------------+-----------+| json_insert | json_replace | json_set |+-------------+--------------+-----------+| [1,2,3,4] | [1,2,3] | [1,2,3,4] |+-------------+--------------+---------- -+

Ini juga dapat dilakukan dengan menggunakan [#] jalur:

SELECT 
    json_insert('[ 1, 2, 3 ]', '$[#]', 4) AS json_insert,
    json_replace('[ 1, 2, 3 ]', '$[#]', 4) AS json_replace,
    json_set('[ 1, 2, 3 ]', '$[#]', 4) AS json_set; 

Hasil:

+-------------+--------------+-----------+| json_insert | json_replace | json_set |+-------------+--------------+-----------+| [1,2,3,4] | [1,2,3] | [1,2,3,4] |+-------------+--------------+---------- -+

Salah satu manfaat menggunakan [#] adalah Anda tidak perlu tahu berapa banyak elemen yang sudah ada dalam array.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Senin Pertama dalam Setahun di SQLite

  2. Cara mengimpor Perpustakaan Persistensi Kamar ke proyek Android

  3. SQLite IN

  4. Secara Otomatis Buka Hasil Kueri SQLite di Excel

  5. Izinkan pengguna untuk hanya mengakses tabel tertentu di penyedia konten saya