sql >> Databasteknik >  >> RDS >> Mysql

JSON_ARRAY_INSERT() – Infoga värden i en JSON-array i MySQL

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"]}} |
+----------------------------------------------------------------------------------+


  1. Hur kör jag en lagrad procedur en gång för varje rad som returneras av en fråga?

  2. Hur lägger jag till index i MySQL-tabeller?

  3. 2019 PostgreSQL-trendrapport:Privat vs. Public Cloud, Migrations, Database Combinations &Top Reasones Used

  4. Hur Strftime()-funktionen fungerar i SQLite