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_docis het JSON-document.pathis het pad van het element waarvoor de nieuwe waarde moet worden ingevoegd.valis 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"]}} |
+----------------------------------------------------------------------------------+