In MariaDB JSON_ARRAY_APPEND()
ist eine integrierte Funktion, die Werte an das Ende des/der angegebenen Arrays/s in einem JSON-Dokument anhängt und das Ergebnis zurückgibt.
Syntax
Die Syntax lautet wie folgt:
JSON_ARRAY_APPEND(json_doc, path, value[, path, value] ...)
Wobei json_doc
ist das JSON-Dokument, path
ist der Pfad, an den Sie den/die Wert/e anhängen möchten, und value
ist der anzuhängende Wert.
Beispiel
Hier ist ein Beispiel, um die Funktion zu demonstrieren.
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4);
Ergebnis:
In diesem Fall der Wert 4
wurde an das Ende des Arrays angehängt.
Mehrere Werte anhängen
Sie können mehrere Werte innerhalb eines einzigen Aufrufs an JSON_ARRAY_APPEND()
anhängen .
Beispiel:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5);
Ergebnis:
Mehrere Arrays
Sie können innerhalb desselben Aufrufs von JSON_ARRAY_APPEND()
Werte an mehr als ein Array anhängen .
Beispiel:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5);
Ergebnis:
Verschachtelte Arrays
Hier ist ein Beispiel für das Anhängen eines Werts an ein verschachteltes Array:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[2]', 4);
Ergebnis:
+------------------------------------+| JSON_ARRAY_APPEND(@json_doc, '$[2]', 4) |+---------------------------------------------- -------+| [0, 1, [2, 3, 4]] |+----------------------------------- ------+
Und im folgenden Beispiel enthält das ursprüngliche JSON-Dokument kein verschachteltes Array, sondern JSON_ARRAY_APPEND()
erstellt ein verschachteltes Array basierend auf unserem Pfad:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4);
Ergebnis:
+------------------------------------+| JSON_ARRAY_APPEND(@json_doc, '$[3]', 4) |+---------------------------------------------- -------+| [0, 1, 2, [3, 4]] |+----------------------------------- ------+
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", "Chicken"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet',
'Water')
);
Ergebnis:
{ "pet":{ "name":"Fluffy", "diät":[ "Fisch", "Huhn", "Wasser" ] }}
Und hier ist einer, der ein verschachteltes Array erstellt:
SET @json_doc = '{
"pet": {
"name": "Scratch",
"diet": ["Beef", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_APPEND(
@json_doc,
'$.pet.diet[1]',
'Beer')
);
Ergebnis:
{ "pet":{ "name":"Scratch", "diät":[ "Rindfleisch", [ "Wasser", "Bier" ] ] }}
Null-Argumente
Wenn das erste Argument NULL
ist , ist das Ergebnis NULL
:
SELECT JSON_ARRAY_APPEND(null, '$', 4);
Ergebnis:
+---------------------------------+| JSON_ARRAY_APPEND(null, '$', 4) |+----------------------------------------------+| NULL |+---------------------------------------------+
Gleiches gilt für den path
Argument:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);
Ergebnis:
+--------------------------+| JSON_ARRAY_APPEND(@json_doc, null, 4) |+--------------------------------------- +| NULL |+---------------------------------------------------+
Wenn jedoch der value
Argument ist NULL
, dann NULL
wird an das Array angehängt:
SET @json_doc = '[0, 1, 2, 3]';
SELECT JSON_ARRAY_APPEND(@json_doc, '$', null);
Ergebnis:
+------------------------------------+| JSON_ARRAY_APPEND(@json_doc, '$', null) |+------------------------------------- ----+| [0, 1, 2, 3, null] |+------------------------------------ ----+
Sie können auch JSON_ARRAY_INSERT()
verwenden um Werte in ein Array einzufügen.