In MySQL, de JSON_ARRAY_INSERT()
functie wordt gebruikt om een nieuwe waarde in een array in te voegen.
U geeft het JSON-document op als het eerste argument, gevolgd door het pad waarin moet worden ingevoegd, gevolgd door de waarde die moet worden ingevoegd.
Syntaxis
De syntaxis gaat als volgt:
JSON_INSERT(json_doc, path, val[, path, val] ...)
Waar:
json_doc
is het JSON-document.path
is het pad van het element waarvoor de nieuwe waarde moet worden ingevoegd.val
is de nieuwe waarde die wordt ingevoegd.
De pad-waardeparen worden van links naar rechts geëvalueerd. Het document dat wordt geproduceerd door een paar te evalueren, wordt de nieuwe waarde waartegen het volgende paar wordt geëvalueerd.
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld om te demonstreren.
SELECT JSON_ARRAY_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';
Resultaat:
+--------------+ | Result | +--------------+ | [1, 4, 2, 3] | +--------------+
Dus het derde argument wordt ingevoegd in de array op het opgegeven pad. In dit geval gebruik ik $[1]
voor het pad, dat verwijst naar het tweede element (JSON-arrays gebruiken op nul gebaseerde nummering - nummering begint bij 0
).
Voorbeeld 2 – Geneste array
Hier is een voorbeeld van het invoegen van een waarde in een array die in een andere array is genest.
SELECT JSON_ARRAY_INSERT('[1, 2, [3, 4]]', '$[2][1]', 5) AS 'Result';
Resultaat:
+-------------------+ | Result | +-------------------+ | [1, 2, [3, 5, 4]] | +-------------------+
Dus hier gebruik ik $[2][1]
als het pad. De [2]
verwijst naar het 3e element van de buitenste array. De [1]
verwijst naar het 2e element van de geneste array.
Voorbeeld 3 – Een groter JSON-document
In dit voorbeeld wordt een (iets) groter JSON-document gebruikt. Dit laat zien hoe het pad verandert, afhankelijk van waar de array zich in het document bevindt.
SET @data = '{ "Person": { "Name": "Homer", "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_ARRAY_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';
Resultaat:
+----------------------------------------------------------------------------------+ | Result | +----------------------------------------------------------------------------------+ | {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} | +----------------------------------------------------------------------------------+