I MySQL, JSON_REPLACE() funktion ersätter värden i ett JSON-dokument och returnerar resultatet.
Du anger JSON-dokumentet som det första argumentet, följt av sökvägen för att ersätta data vid, följt av värdet att ersätta det befintliga värdet med.
Du kan ersätta data på flera ställen i dokumentet om det behövs. För att göra detta, ange bara flera sökväg/värdepar efter behov.
Syntax
Syntaxen ser ut så här:
JSON_REPLACE(json_doc, sökväg, val[, sökväg, val] ...)
Där json_doc är JSON-dokumentet, path är sökvägen för att ersätta data vid och val är det nya värdet för att ersätta det befintliga värdet.
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.
Om sökvägen/värdeparet inte finns i JSON-dokumentet ignoreras det och har ingen effekt.
Det första argumentet måste vara ett giltigt JSON-dokument, annars uppstår ett fel.
Även path argumentet måste vara ett giltigt sökvägsuttryck och det får inte innehålla en * eller ** jokertecken, annars uppstår ett fel.
Exempel 1 – Grundläggande användning
Här är ett exempel att visa.
SELECT JSON_REPLACE('{"a":1, "b":2, "c":3}', '$.b', 9) SOM 'Resultat'; Resultat:
+--------------------------------+| Resultat |+--------------------------------+| {"a":1, "b":9, "c":3} |+--------------------------------+
I det här fallet ersatte vi b s värde med 9 . Detta beror på att vi angav $.b som det andra argumentet och 9 som den tredje.
Här är ett annat exempel:
SELECT JSON_REPLACE('{"Name":"Bart", "Age":10}', '$.Name', 'Nelson - Ha Ha!') AS 'Result';
Resultat:
+----------------------------------------+| Resultat |+----------------------------------------+| {"Ålder":10, "Namn":"Nelson - Ha Ha!"} |+----------------------------------- -----------+ Exempel 2 – Icke-existerande sökväg
Om du anger en sökväg som inte finns tas ingenting bort. Det ursprungliga JSON-dokumentet returneras utan ändringar.
SELECT JSON_REPLACE('{"Name":"Homer", "Age":39}', '$.Gender', 'Mane') AS 'Result';
Resultat:
+-------------------------------------+| Resultat |+-------------------------------------+| {"Ålder":39, "Namn":"Homer"} |+-------------------------------------+ Exempel 3 – Arrayer
Här är ett exempel som använder en array.
SELECT JSON_REPLACE('[1, 2, 3]', '$[0]', 9) SOM 'Resultat';
Resultat:
+------------+| Resultat |+-----------+| [9, 2, 3] |+-----------+
Matriser använder nollbaserad numrering, så i det här fallet ersätts det första elementet.
Här är ett annat exempel på array. Den här gången ersätter vi ett värde i en kapslad array.
SELECT JSON_REPLACE('[1, 2, [3, 4, 5]]', '$[2][1]', 9) SOM 'Resultat';
Resultat:
+------------------------+| Resultat |+--------------------+| [1, 2, [3, 9, 5]] |+-------------------+
Exempel 4 – Flera sökvägar
Du kan ange mer än en sökväg för att ersätta data på flera ställen i JSON-dokumentet.
Grundläggande exempel:
SELECT JSON_REPLACE('[1, 2, 3, 4, 5]', '$[1]', 9, '$[3]', 22) SOM 'Resultat';
Resultat:
+------------------------+| Resultat |+------------------------+| [1, 9, 3, 22, 5] |+------------------------+
Exempel 5 – Ett större JSON-dokument
Här är ett exempel med ett (något) större JSON-dokument.
SET @data ='{ "Person":{ "Name":"Homer", "Age":39, "Hobbys":["Äta", "Sova"] } }';SELECT JSON_REPLACE(@data , '$.Person.Name', 'Bart', '$.Person.Age', 10, '$.Person.Hobbies[1]', 'Base Jumping') SOM 'Resultat';
Resultat:
+------------------------------------------------------ ----------------------------------+| Resultat |+------------------------------------------------------- ----------------------------------+| {"Person":{"Age":10, "Name":"Bart", "Hobbies":["Äta", "Base Jumping"]}} |+------- -------------------------------------------------- ------------------+