sql >> Database teknologi >  >> RDS >> Mysql

JSON_ARRAY_INSERT() – Indsæt værdier i et JSON-array i MySQL

I MySQL er JSON_ARRAY_INSERT() funktion bruges til at indsætte en ny værdi i et array.

Du angiver JSON-dokumentet som det første argument, efterfulgt af stien, der skal indsættes i, efterfulgt af værdien, der skal indsættes.

Syntaks

Syntaksen ser sådan ud:

JSON_INSERT(json_doc, path, val[, path, val] ...)

Hvor:

  • json_doc er JSON-dokumentet.
  • sti er stien til det element, som den nye værdi skal indsættes for.
  • val er den nye værdi, der vil blive indsat.

Sti-værdi-parrene evalueres fra venstre mod højre. Dokumentet fremstillet ved at evaluere et par bliver den nye værdi, som det næste par evalueres i forhold til.

Eksempel 1 – Grundlæggende brug

Her er et eksempel til at demonstrere.

SELECT JSON_ARRAY_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';

Resultat:

+--------------+
| Result       |
+--------------+
| [1, 4, 2, 3] |
+--------------+

Så det 3. argument indsættes i arrayet ved den angivne sti. I dette tilfælde bruger jeg $[1] for stien, som refererer til det andet element (JSON-arrays bruger nul-baseret nummerering – nummerering starter ved 0 ).

Eksempel 2 – Nested Array

Her er et eksempel på indsættelse af en værdi i et array, der er indlejret i et andet array.

SELECT JSON_ARRAY_INSERT('[1, 2, [3, 4]]', '$[2][1]', 5) AS 'Result';

Resultat:

+-------------------+
| Result            |
+-------------------+
| [1, 2, [3, 5, 4]] |
+-------------------+

Så her bruger jeg $[2][1] som stien. [2] refererer til det 3. element i det ydre array. [1] henviser til det andet element i det indlejrede array.

Eksempel 3 – Et større JSON-dokument

Dette eksempel bruger et (lidt) større JSON-dokument. Dette viser, hvordan stien ændres afhængigt af, hvor arrayet er 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. Maksimal udførelsestid i phpMyadmin

  2. Flere forsinkede replikeringsslaver til katastrofeoprettelse med lav RTO

  3. Sådan får du den aktuelle dato i SQL Server

  4. Oracle:hvad er situationen for at bruge RAISE_APPLICATION_ERROR?