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