Menyisipkan nilai JSON ke dalam array atau objek JSON pada posisi yang ditentukan.
Sintaks
JSON json_insert(JSON <input>, ARRAY STRING <path>, JSON <value>, BOOLEAN <insert_after>);Parameter
| Parameter | Wajib | Tipe | Deskripsi |
|---|---|---|---|
input | Ya | JSON array atau JSON object | Dokumen JSON yang akan disisipi. |
path | Ya | ARRAY STRING | Posisi tempat nilai tersebut akan disisipkan. |
value | Ya | JSON | Nilai JSON yang akan disisipkan. |
insert_after | Ya | Boolean | Mengontrol arah penyisipan ketika input berisi array dan elemen pada path sudah ada. true menyisipkan setelah posisi tersebut; false menyisipkan sebelumnya. Nilai default: false. |
Nilai kembalian
Mengembalikan dokumen JSON yang telah dimodifikasi.
Catatan penggunaan
Aturan penyisipan array: Saat menyisipkan ke dalam array, misalkan n adalah panjang array dan m adalah indeks target yang ditentukan dalam path:
| Kondisi | Perilaku |
|---|---|
m >= n | Ditambahkan di akhir array |
m < -n | Ditambahkan di awal array |
-n <= m < n | Disisipkan pada posisi m, relatif terhadap insert_after |
input tidak berisi array | Disisipkan di akhir secara default |
Contoh
Menyisipkan ke dalam objek JSON
Tambahkan kunci t3 ke dalam objek bersarang f2:
SELECT json_insert(
JSON'{"f1":1,"f2":{"t1":1,"t2":2}}',
array("f2","t3"),
JSON'3',
false
);Hasil: {"f1":1,"f2":{"t1":1,"t2":2,"t3":3}}
Menyisipkan ke dalam array JSON
Semua contoh berikut menggunakan {"f1":[0,1,2]} sebagai input. Array tersebut memiliki panjang 3, sehingga n = 3.
Menyisipkan sebelum atau setelah indeks tertentu (-n <= m < n):
-- Sisipkan 10 sebelum indeks 0 (insert_after = false)
SELECT json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', false);
-- Hasil: {"f1":[10,0,1,2]}
-- Sisipkan 10 setelah indeks 0 (insert_after = true)
SELECT json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', true);
-- Hasil: {"f1":[0,10,1,2]}
-- Sisipkan 10 sebelum indeks 1 (insert_after = false)
SELECT json_insert(JSON'{"f1":[0,1,2]}', array("f1","1"), JSON'10', false);
-- Hasil: {"f1":[0,10,1,2]}Menambahkan di akhir (m >= n, indeks 4 >= panjang 3):
SELECT json_insert(JSON'{"f1":[0,1,2]}', array("f1","4"), JSON'4', false);
-- Hasil: {"f1":[0,1,2,4]}Menambahkan di awal (m < -n, indeks -4 < -3):
SELECT json_insert(JSON'{"f1":[0,1,2]}', array("f1","-4"), JSON'4', false);
-- Hasil: {"f1":[4,0,1,2]}