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

JSON_ARRAY_APPEND() – Werte an ein JSON-Array in MySQL anhängen

Wenn Sie JSON-Dokumente mit MySQL verwenden, können Sie JSON_ARRAY_APPEND() verwenden Funktion zum Anhängen neuer Werte an ein Array.

So funktioniert es:Sie geben das JSON-Dokument als erstes Argument an, gefolgt von dem Pfad zum Anhängen, gefolgt von dem anzuhängenden Wert.

In MySQL 5.7 hieß diese Funktion JSON_APPEND() aber dieser Name wird nicht mehr unterstützt.

Syntax

Die Syntax lautet wie folgt:

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

Wo:

  • json_doc ist das JSON-Dokument.
  • path ist der Pfad des Elements, an das der neue Wert angehängt werden soll.
  • val ist der neue Wert, der angehängt 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_APPEND('[1, 2, 3]', '$', 4) AS 'Ergebnis';

Ergebnis:

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

Also wird das 3. Argument an das Array angehängt. In diesem Fall verwende ich $ für den Weg. Dies ist ein Synonym für das JSON-Dokument, daher wird der Wert an das Array der obersten Ebene angehängt (das in diesem Fall zufällig das einzige Array ist).

Beispiel 2 – Verschachteltes Array

Hier ist ein Beispiel für das Anhängen eines Werts an ein Array, das in einem anderen Array verschachtelt ist.

SELECT JSON_ARRAY_APPEND('[1, 2, [3, 4]]', '$[2]', 5) AS 'Ergebnis';

Ergebnis:

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

Hier verwende ich also $[2] als Weg. Dies gibt das Array beim dritten Element an (Arrays verwenden eine nullbasierte Nummerierung, daher beginnt die Zählung bei Null).

Wenn an diesem Element noch kein Array vorhanden war, wird ein neues Array erstellt.

So:

SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$[2]', 4) AS 'Ergebnis';

Ergebnis:

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

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":["Essen", "Schlafen"] } }';SELECT JSON_ARRAY_APPEND(@data, '$.Person. Hobbys', "Base Jumping") AS 'Ergebnis';

Ergebnis:

+---------------------------------------------- ------------------------------------+| Ergebnis |+------------------------------------------------------------ -----------------------------------+| {"Person":{"Name":"Homer", "Hobbies":["Essen", "Schlafen", "Base-Jumping"]}} |+-------------- -------------------------------------------------- ------------------+

Und genau wie im vorherigen Beispiel können wir bei Bedarf auch ein neues, verschachteltes Array erstellen:

SET @data ='{ "Person":{ "Name":"Homer", "Hobbies":["Essen", "Schlafen"] } }';SELECT JSON_ARRAY_APPEND(@data, '$.Person. Hobbys[0]', "Trinken") AS 'Ergebnis';

Ergebnis:

+---------------------------------------------- ---------------------------------+| Ergebnis |+------------------------------------------------------------ ---------------------------------+| {"Person":{"Name":"Homer", "Hobbies":[["Essen", "Trinken"], "Schlafen"]}} |+------------- -------------------------------------------------- ------------------+