Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JSON_ARRAY_INSERT() – Fügt Werte in ein JSON-Array in MySQL ein

In MySQL der JSON_ARRAY_INSERT() Funktion wird verwendet, um einen neuen Wert in ein Array einzufügen.

Sie geben das JSON-Dokument als erstes Argument an, gefolgt vom einzufügenden Pfad und dem einzufügenden Wert.

Syntax

Die Syntax lautet wie folgt:

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

Wo:

  • json_doc ist das JSON-Dokument.
  • Pfad ist der Pfad des Elements, für das der neue Wert eingefügt werden soll.
  • val ist der neue Wert, der eingefügt wird.

Die Pfad-Wert-Paare werden von links nach rechts ausgewertet. Das durch die Bewertung eines Paares erstellte Dokument wird zum neuen Wert, anhand dessen das nächste Paar bewertet wird.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel zur Veranschaulichung.

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

Ergebnis:

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

Das 3. Argument wird also am angegebenen Pfad in das Array eingefügt. In diesem Fall verwende ich $[1] für den Pfad, der auf das zweite Element verweist (JSON-Arrays verwenden eine nullbasierte Nummerierung – die Nummerierung beginnt bei 0 ).

Beispiel 2 – Verschachteltes Array

Hier ist ein Beispiel für das Einfügen eines Werts in ein Array, das in einem anderen Array verschachtelt ist.

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

Ergebnis:

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

Hier verwende ich also $[2][1] als Weg. Der [2][code> bezieht sich auf das 3. Element des äußeren Arrays. Der [1][code> bezieht sich auf das 2. Element des verschachtelten Arrays.

Beispiel 3 – Ein größeres JSON-Dokument

Dieses Beispiel verwendet ein (etwas) größeres JSON-Dokument. Dies zeigt, wie sich der Pfad ändert, je nachdem, wo sich das Array innerhalb des Dokuments befindet.

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

Ergebnis:

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