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 adalah NULL , lalu NULL 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.