In MariaDB JSON_ARRAY_INSERT() ist eine integrierte Funktion, die einen Wert in ein JSON-Dokument einfügt und das Ergebnis zurückgibt.
Syntax
Die Syntax lautet wie folgt:
JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)
Wobei json_doc ist das JSON-Dokument, path ist der Pfad, in den Sie den/die Wert/e einfügen möchten, und value ist der einzufügende Wert.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3); Ergebnis:
+--------------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |+---------------------- ----------------+| [0, 3, 1, 2] |+--------------------------------------------------- ----+
In diesem Fall der Wert 3 wurde in das Array an Position 1 eingefügt . Arrays sind nullbasiert, also wird es das zweite Element im Array.
Mehrere Werte einfügen
Sie können mehrere Werte in einem einzigen Aufruf von JSON_ARRAY_INSERT() einfügen .
Beispiel:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5); Ergebnis:
Die Auswertung erfolgt von links nach rechts.
Folgendes passiert, wenn wir den path wechseln /value Argumente um:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4); Ergebnis:
Mehrere Arrays
Sie können innerhalb desselben Aufrufs von JSON_ARRAY_INSERT() Werte in mehr als ein Array einfügen .
Beispiel:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5); Ergebnis:
Verschachtelte Arrays
Hier ist ein Beispiel für das Einfügen eines Werts in ein verschachteltes Array:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4); Ergebnis:
+--------------------------------------------------+| JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) |+------------------------------- -------------+| [0, 1, [2, 4, 3]] |+----------------------------------- ---------+
Größeres JSON-Dokument
Hier ist ein Beispiel mit einem etwas größeren JSON-Dokument.
Ich verwende auch JSON_DETAILED() um das Ergebnis zu verschönern:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_INSERT(
@json_doc,
'$.pet.diet[1]',
'Chicken')
); Ergebnis:
{ "pet":{ "name":"Fluffy", "diät":[ "Fisch", "Huhn", "Wasser" ] }} Null-Argumente
Wenn das erste Argument NULL ist , ist das Ergebnis NULL :
SELECT JSON_ARRAY_INSERT(null, '$[1]', 4); Ergebnis:
+------------------------------------+| JSON_ARRAY_INSERT(null, '$[1]', 4) |+----------------------------------- -+| NULL |+------------------------------------+
Gleiches gilt für den path Argument:
SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4); Ergebnis:
+--------------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |+------------------------------ --------------+| NULL |+--------------------------------------------+
Wenn jedoch der value Argument ist NULL , dann NULL wird in das Array eingefügt:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null); Ergebnis:
Sie können auch JSON_ARRAY_APPEND() verwenden um Werte an ein Array anzuhängen.