Di MariaDB, JSON_ARRAY_INSERT()
adalah fungsi bawaan yang memasukkan nilai ke dalam dokumen JSON dan mengembalikan hasilnya.
Sintaks
Sintaksnya seperti ini:
JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)
Dimana json_doc
adalah dokumen JSON, path
adalah jalur ke tempat Anda ingin memasukkan nilai, dan value
adalah nilai yang akan disisipkan.
Contoh
Berikut ini contoh untuk didemonstrasikan.
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3);
Hasil:
+-------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |+--------------------------- ----------------+| [0, 3, 1, 2] |+--------------------------------------- ----+
Dalam hal ini, nilai 3
dimasukkan ke dalam array pada posisi 1
. Array berbasis nol, sehingga menjadi elemen kedua dalam array.
Sisipkan Beberapa Nilai
Anda dapat memasukkan beberapa nilai dalam satu panggilan ke JSON_ARRAY_INSERT()
.
Contoh:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5);
Hasil:
+------------------------------------------------- --------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |+------------------ ------------------------------------+| [4, 0, 5, 1, 2] |+------------------------------------- -----------------+
Evaluasi dilakukan dari kiri ke kanan.
Inilah yang terjadi jika kita mengganti path
/value
argumen seputar:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4);
Hasil:
+------------------------------------------------- --------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |+------------------ ------------------------------------+| [4, 0, 1, 5, 2] |+------------------------------------- -----------------+
Beberapa Array
Anda dapat memasukkan nilai ke lebih dari satu larik dalam panggilan yang sama ke JSON_ARRAY_INSERT()
.
Contoh:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5);
Hasil:
+------------------------------------------------- ----------+| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |+--------------------- -----------------------------------+| {"a":[0, 4, 1], "b":[2, 3, 5]} |+----------------------- ----------------------------------+
Array Bersarang
Berikut ini contoh memasukkan nilai ke dalam array bersarang:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4);
Hasil:
+--------------------------------------------+| JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) |+------------------------------- -------------+| [0, 1, [2, 4, 3]] |+----------------------------------- ---------+
Dokumen JSON Lebih Besar
Berikut ini contoh dengan dokumen JSON yang sedikit lebih besar.
Saya juga menggunakan JSON_DETAILED()
untuk mempercantik hasilnya:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_INSERT(
@json_doc,
'$.pet.diet[1]',
'Chicken')
);
Hasil:
{ "pet":{ "name":"Fluffy", "diet":[ "Ikan", "Ayam", "Air" ] }}
Argumen Null
Jika argumen pertama adalah NULL
, hasilnya adalah NULL
:
SELECT JSON_ARRAY_INSERT(null, '$[1]', 4);
Hasil:
+------------------------------------+| JSON_ARRAY_INSERT(null, '$[1]', 4) |+----------------------------------- -+| NULL |+-----------------------------------+
Hal yang sama berlaku untuk path
argumen:
SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4);
Hasil:
+--------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |+------------------------------ --------------+| NULL |+--------------------------------------------+Namun, jika
value
argumennya adalahNULL
, laluNULL
dimasukkan ke dalam larik:SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null);
Hasil:
+------------------------------------------------- +| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |+--------------------------- -------------------+| [0, null, 1, 2] |+--------------------------------------- -------+Anda juga dapat menggunakan
JSON_ARRAY_APPEND()
untuk menambahkan nilai ke array.