I MySQL, JSON_INSERT() funktion infogar ett värde i ett JSON-dokument och returnerar resultatet.
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, sökväg, val[, sökväg, 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_INSERT('{"a":1, "b":2}', '$.c', 3) SOM 'Resultat'; Resultat:
+--------------------------------+| Resultat |+--------------------------------+| {"a":1, "b":2, "c":3} |+--------------------------------+
Så det 3:e argumentet infogas i arrayen vid den angivna sökvägen. I det här fallet använder jag $.c för sökvägen och 3 för värdet som ska infogas. Detta resulterar i ett nyckel/värdepar av "c": 3 .
Här är ett annat exempel:
SELECT JSON_INSERT('{"Namn":"Homer", "Kön":"Man"}', '$.Age', 39) SOM 'Resultat';
Resultat:
+------------------------------------------------------ --+| Resultat |+------------------------------------------------------ -+| {"Ålder":39, "Namn":"Homer", "Kön":"Man"} |+-------------------------------- ----------------------------+ Exempel 2 – Försöker skriva över en befintlig sökväg
Ett sökväg-värdepar för en befintlig sökväg i dokumentet ignoreras och skriver inte över det befintliga dokumentvärdet.
Så om vi modifierar föregående exempel för att infoga ett värde vid Name (som redan finns), ingen infogning sker:
SELECT JSON_INSERT('{"Namn":"Homer", "Kön":"Man"}', '$.Name', "Bart") SOM 'Resultat';
Resultat:
+---------------------------------------------+| Resultat |+---------------------------------------------+| {"Name":"Homer", "Gender":"Mane"} |+-------------------------------------- ------+ Exempel 3 – Arrayer
Du kan infoga värden i en matris genom att använda en sökväg förbi slutet av den befintliga matrisen. Exempel:
SELECT JSON_INSERT('[1, 2, 3]', '$[3]', 4) SOM 'Resultat';
Resultat:
+--------------+| Resultat |+--------------+| [1, 2, 3, 4] |+--------------------+
Men om du använder en sökväg som redan finns i arrayen kommer arrayen att förbli oförändrad:
SELECT JSON_INSERT('[1, 2, 3]', '$[1]', 4) SOM 'Resultat';
Resultat:
+------------+| Resultat |+-----------+| [1, 2, 3] |+-----------+
Om det befintliga värdet inte är en array, lindas det automatiskt som en array och utökas sedan med det nya värdet. Exempel:
SELECT JSON_INSERT('{"a":1, "b":2}', '$[2]', 3) SOM 'Resultat';
Resultat:
+------------------------------+| Resultat |+------------------------------+| [{"a":1, "b":2}, 3] |+-----------------------------+
Men återigen, om du försöker infoga ett värde på en sökväg som redan finns, förblir JSON-dokumentet oförändrat:
SELECT JSON_INSERT('{"a":1, "b":2}', '$[0]', 3) SOM 'Resultat';
Resultat:
+------------------------+| Resultat |+------------------------+| {"a":1, "b":2} |+------------------------+ Exempel 4 – Ett större JSON-dokument
Här är ett exempel med ett (något) större JSON-dokument.
SET @data ='{ "Person":{ "Name":"Homer", "Hobbies":["Äta", "Sova"] } }';SELECT JSON_INSERT(@data, '$.Person. Hobbies[2]', "Base Jumping") AS 'Result';
Resultat:
+------------------------------------------------------ ------------------------------------+| Resultat |+------------------------------------------------------- ----------------------------------+| {"Person":{"Name":"Homer", "Hobbies":["Äta", "Sova", "Base Jumping"]}} |+-------- -------------------------------------------------- ------------------+
Se även JSON_ARRAY_INSERT() och JSON_ARRAY_APPEND() om du behöver infoga eller lägga till data i en JSON-array.