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.