sql >> Database >  >> RDS >> Mysql

JSON_ARRAY_INSERT() - Waarden invoegen in een JSON-array in MySQL

In MySQL, de JSON_ARRAY_INSERT() functie wordt gebruikt om een ​​nieuwe waarde in een array in te voegen.

U geeft het JSON-document op als het eerste argument, gevolgd door het pad waarin moet worden ingevoegd, gevolgd door de waarde die moet worden ingevoegd.

Syntaxis

De syntaxis gaat als volgt:

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

Waar:

  • json_doc is het JSON-document.
  • path is het pad van het element waarvoor de nieuwe waarde moet worden ingevoegd.
  • val is de nieuwe waarde die wordt ingevoegd.

De pad-waardeparen worden van links naar rechts geëvalueerd. Het document dat wordt geproduceerd door een paar te evalueren, wordt de nieuwe waarde waartegen het volgende paar wordt geëvalueerd.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

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

Resultaat:

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

Dus het derde argument wordt ingevoegd in de array op het opgegeven pad. In dit geval gebruik ik $[1] voor het pad, dat verwijst naar het tweede element (JSON-arrays gebruiken op nul gebaseerde nummering - nummering begint bij 0 ).

Voorbeeld 2 – Geneste array

Hier is een voorbeeld van het invoegen van een waarde in een array die in een andere array is genest.

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

Resultaat:

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

Dus hier gebruik ik $[2][1] als het pad. De [2] verwijst naar het 3e element van de buitenste array. De [1] verwijst naar het 2e element van de geneste array.

Voorbeeld 3 – Een groter JSON-document

In dit voorbeeld wordt een (iets) groter JSON-document gebruikt. Dit laat zien hoe het pad verandert, afhankelijk van waar de array zich in het document bevindt.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_ARRAY_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';

Resultaat:

+----------------------------------------------------------------------------------+
| Result                                                                           |
+----------------------------------------------------------------------------------+
| {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} |
+----------------------------------------------------------------------------------+


  1. mysql_fetch_row() versus mysql_fetch_assoc() versus mysql_fetch_array()

  2. Hoe SQuirrel SQL Client te installeren

  3. Optionele afhankelijkheden creëren

  4. Een Oracle-database migreren van AWS EC2 naar AWS RDS, deel 3