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.