Di MySQL, JSON_ARRAY_INSERT()
fungsi digunakan untuk memasukkan nilai baru ke dalam array.
Anda memberikan dokumen JSON sebagai argumen pertama, diikuti dengan jalur yang akan dimasukkan, diikuti dengan nilai yang akan disisipkan.
Sintaks
Sintaksnya seperti ini:
JSON_INSERT(json_doc, path, val[, path, val] ...)
Dimana:
json_doc
adalah dokumen JSON.path
adalah jalur elemen yang akan disisipkan nilai baru.val
adalah nilai baru yang akan dimasukkan.
Pasangan jalur-nilai dievaluasi dari kiri ke kanan. Dokumen yang dihasilkan dengan mengevaluasi satu pasangan menjadi nilai baru yang digunakan untuk mengevaluasi pasangan berikutnya.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
SELECT JSON_ARRAY_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';
Hasil:
+--------------+ | Result | +--------------+ | [1, 4, 2, 3] | +--------------+
Jadi argumen ke-3 dimasukkan ke dalam array di jalur yang ditentukan. Dalam hal ini, saya menggunakan $[1]
untuk jalur, yang merujuk ke elemen kedua (array JSON menggunakan penomoran berbasis nol – penomoran dimulai dari 0
).
Contoh 2 – Array Bersarang
Berikut ini contoh penyisipan nilai ke dalam larik yang bersarang di dalam larik lain.
SELECT JSON_ARRAY_INSERT('[1, 2, [3, 4]]', '$[2][1]', 5) AS 'Result';
Hasil:
+-------------------+ | Result | +-------------------+ | [1, 2, [3, 5, 4]] | +-------------------+
Jadi di sini, saya menggunakan $[2][1]
sebagai jalan. [2]
mengacu pada elemen ke-3 dari larik luar. [1]
mengacu pada elemen ke-2 dari array bersarang.
Contoh 3 – Dokumen JSON yang Lebih Besar
Contoh ini menggunakan dokumen JSON (sedikit) lebih besar. Ini menunjukkan bagaimana jalur berubah tergantung di mana array berada dalam dokumen.
SET @data = '{ "Person": { "Name": "Homer", "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_ARRAY_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';
Hasil:
+----------------------------------------------------------------------------------+ | Result | +----------------------------------------------------------------------------------+ | {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} | +----------------------------------------------------------------------------------+