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.