I MySQL, JSON_ARRAY_INSERT()
funktion används för att infoga ett nytt värde i en array.
Du anger JSON-dokumentet som det första argumentet, följt av sökvägen att infoga i, följt av värdet som ska infogas.
Syntax
Syntaxen ser ut så här:
JSON_INSERT(json_doc, path, val[, path, val] ...)
Var:
json_doc
är JSON-dokumentet.path
är sökvägen till elementet för vilket det nya värdet ska infogas.val
är det nya värdet som kommer att infogas.
Väg-värdeparen utvärderas från vänster till höger. Dokumentet som skapas genom att utvärdera ett par blir det nya värdet mot vilket nästa par utvärderas.
Exempel 1 – Grundläggande användning
Här är ett exempel att visa.
SELECT JSON_ARRAY_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';
Resultat:
+--------------+ | Result | +--------------+ | [1, 4, 2, 3] | +--------------+
Så det 3:e argumentet infogas i arrayen vid den angivna sökvägen. I det här fallet använder jag $[1]
för sökvägen, som refererar till det andra elementet (JSON-matriser använder nollbaserad numrering – numrering börjar på 0
).
Exempel 2 – Kapslad array
Här är ett exempel på att infoga ett värde i en array som är kapslad i en annan array.
SELECT JSON_ARRAY_INSERT('[1, 2, [3, 4]]', '$[2][1]', 5) AS 'Result';
Resultat:
+-------------------+ | Result | +-------------------+ | [1, 2, [3, 5, 4]] | +-------------------+
Så här använder jag $[2][1]
som vägen. [2]
hänvisar till det tredje elementet i den yttre arrayen. [1]
hänvisar till det andra elementet i den kapslade arrayen.
Exempel 3 – Ett större JSON-dokument
Det här exemplet använder ett (något) större JSON-dokument. Detta visar hur sökvägen ändras beroende på var arrayen är i dokumentet.
SET @data = '{ "Person": { "Name": "Homer", "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_ARRAY_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';
Resultat:
+----------------------------------------------------------------------------------+ | Result | +----------------------------------------------------------------------------------+ | {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} | +----------------------------------------------------------------------------------+