Di MariaDB, JSON_ARRAY_APPEND()
adalah fungsi bawaan yang menambahkan nilai ke akhir larik yang ditentukan dalam dokumen JSON, dan mengembalikan hasilnya.
Sintaks
Sintaksnya seperti ini:
JSON_ARRAY_APPEND(json_doc, path, value[, path, value] ...)
Dimana json_doc
adalah dokumen JSON, path
adalah jalur ke tempat Anda ingin menambahkan nilai, dan value
adalah nilai yang akan ditambahkan.
Contoh
Berikut ini contoh untuk mendemonstrasikan fungsinya.
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4);
Hasil:
+--------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', 4) | +--------------------------------------+ | [0, 1, 2, 3, 4] | +--------------------------------------+
Dalam hal ini, nilai 4
telah ditambahkan ke akhir larik.
Tambahkan Beberapa Nilai
Anda dapat menambahkan beberapa nilai dalam satu panggilan ke JSON_ARRAY_APPEND()
.
Contoh:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5);
Hasil:
+----------------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5) | +----------------------------------------------+ | [0, 1, 2, 3, 4, 5] | +----------------------------------------------+
Beberapa Array
Anda dapat menambahkan nilai ke lebih dari satu larik dalam panggilan yang sama ke JSON_ARRAY_APPEND()
.
Contoh:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5);
Hasil:
+--------------------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5) | +--------------------------------------------------+ | {"a": [0, 1, 4], "b": [2, 3, 5]} | +--------------------------------------------------+
Array Bersarang
Berikut ini contoh menambahkan nilai ke array bersarang:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[2]', 4);
Hasil:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$[2]', 4) | +-----------------------------------------+ | [0, 1, [2, 3, 4]] | +-----------------------------------------+
Dan dalam contoh berikut, dokumen JSON asli tidak berisi array bersarang, tetapi JSON_ARRAY_APPEND()
membuat array bersarang berdasarkan jalur kami:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4);
Hasil:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$[3]', 4) | +-----------------------------------------+ | [0, 1, 2, [3, 4]] | +-----------------------------------------+
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", "Chicken"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet',
'Water')
);
Hasil:
{ "pet": { "name": "Fluffy", "diet": [ "Fish", "Chicken", "Water" ] } }
Dan inilah yang membuat array bersarang:
SET @json_doc = '{
"pet": {
"name": "Scratch",
"diet": ["Beef", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet[1]',
'Beer')
);
Hasil:
{ "pet": { "name": "Scratch", "diet": [ "Beef", [ "Water", "Beer" ] ] } }
Argumen Null
Jika argumen pertama adalah NULL
, hasilnya adalah NULL
:
SELECT JSON_ARRAY_APPEND(null, '$', 4);
Hasil:
+---------------------------------+ | JSON_ARRAY_APPEND(null, '$', 4) | +---------------------------------+ | NULL | +---------------------------------+
Hal yang sama berlaku untuk path
argumen:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);
Hasil:
+---------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, null, 4) | +---------------------------------------+ | NULL | +---------------------------------------+
Namun, jika value
argumennya adalah NULL
, lalu NULL
ditambahkan ke larik:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', null);
Hasil:
+-----------------------------------------+ | JSON_ARRAY_APPEND(@json_doc, '$', null) | +-----------------------------------------+ | [0, 1, 2, 3, null] | +-----------------------------------------+
Anda juga dapat menggunakan JSON_ARRAY_INSERT()
untuk memasukkan nilai ke dalam array.