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 je NULL 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.