V MariaDB, JSON_ARRAY_INSERT()
je vestavěná funkce, která vloží hodnotu do dokumentu JSON a vrátí výsledek.
Syntaxe
Syntaxe vypadá takto:
JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)
Kde json_doc
je dokument JSON, path
je cesta k místu, kam chcete vložit hodnotu/y, a value
je hodnota, kterou chcete vložit.
Příklad
Zde je příklad k demonstraci.
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3);
Výsledek:
+-------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |+--------------------------- -----------------+| [0, 3, 1, 2] |+--------------------------------------- ----+
V tomto případě hodnota 3
byl vložen do pole na pozici 1
. Pole jsou založeny na nule, takže se stávají druhým prvkem v poli.
Vložit více hodnot
Do jednoho volání JSON_ARRAY_INSERT()
můžete vložit více hodnot .
Příklad:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5);
Výsledek:
+---------------------------------------------- --------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |+------------------ ------------------------------------+| [4, 0, 5, 1, 2] |+------------------------------------- -----------------+
Hodnocení se provádí zleva doprava.
Zde je to, co se stane, když přepneme path
/value
argumenty kolem:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4);
Výsledek:
+---------------------------------------------- --------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |+------------------ ------------------------------------+| [4, 0, 1, 5, 2] |+------------------------------------- -----------------+
Více polí
Hodnoty můžete vložit do více než jednoho pole v rámci stejného volání JSON_ARRAY_INSERT()
.
Příklad:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5);
Výsledek:
+---------------------------------------------- ----------+| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |+--------------------- -----------------------------------+| {"a":[0, 4, 1], "b":[2, 3, 5]} |+----------------------- ---------------------------------+
Vnořená pole
Zde je příklad vložení hodnoty do vnořeného pole:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4);
Výsledek:
+--------------------------------------------+| JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) |+------------------------------- -------------+| [0, 1, [2, 4, 3]] |+------------------------------------ ---------+
Větší dokument JSON
Zde je příklad s mírně větším dokumentem JSON.
Také používám JSON_DETAILED()
pro zkrášlení výsledku:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_INSERT(
@json_doc,
'$.pet.diet[1]',
'Chicken')
);
Výsledek:
{ "pet":{ "name":"Fluffy", "diet":[ "Ryby", "Kuře", "Voda" ] }}
Nulové argumenty
Pokud je první argument NULL
, výsledkem je NULL
:
SELECT JSON_ARRAY_INSERT(null, '$[1]', 4);
Výsledek:
+------------------------------------+| JSON_ARRAY_INSERT(null; '$[1]'; 4) |+----------------------------------- -+| NULL |+------------------------------------+
Totéž platí pro path
argument:
SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4);
Výsledek:
+--------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |+------------------------------ ---------------+| NULL |+--------------------------------------------+Pokud však
value
argument jeNULL
a potéNULL
se vloží do pole:SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null);
Výsledek:
+---------------------------------------------- +| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |+--------------------------- -------------------+| [0, null, 1, 2] |+--------------------------------------- -------+Můžete také použít
JSON_ARRAY_APPEND()
pro připojení hodnot k poli.