W MariaDB, JSON_ARRAY_INSERT() to wbudowana funkcja, która wstawia wartość do dokumentu JSON i zwraca wynik.
Składnia
Składnia wygląda tak:
JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)
Gdzie json_doc jest dokumentem JSON, path jest ścieżką do miejsca, w którym chcesz wstawić wartości, a value to wartość do wstawienia.
Przykład
Oto przykład do zademonstrowania.
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3); Wynik:
+-------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |
+-------------------------------------------+
| [0, 3, 1, 2] |
+-------------------------------------------+
W tym przypadku wartość 3 został wstawiony do tablicy w pozycji 1 . Tablice są oparte na zerach, więc staje się drugim elementem tablicy.
Wstaw wiele wartości
Możesz wstawić wiele wartości w jednym wywołaniu JSON_ARRAY_INSERT() .
Przykład:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5); Wynik:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |
+------------------------------------------------------+
| [4, 0, 5, 1, 2] |
+------------------------------------------------------+ Ocena odbywa się od lewej do prawej.
Oto, co się stanie, jeśli zmienimy path /value argumenty wokół:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4); Wynik:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |
+------------------------------------------------------+
| [4, 0, 1, 5, 2] |
+------------------------------------------------------+ Wiele tablic
Możesz wstawić wartości do więcej niż jednej tablicy w ramach tego samego wywołania JSON_ARRAY_INSERT() .
Przykład:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5); Wynik:
+--------------------------------------------------------+
| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |
+--------------------------------------------------------+
| {"a": [0, 4, 1], "b": [2, 3, 5]} |
+--------------------------------------------------------+ Zagnieżdżone tablice
Oto przykład wstawiania wartości do zagnieżdżonej tablicy:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4); Wynik:
+--------------------------------------------+ | JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) | +--------------------------------------------+ | [0, 1, [2, 4, 3]] | +--------------------------------------------+
Większy dokument JSON
Oto przykład z nieco większym dokumentem JSON.
Używam również JSON_DETAILED() aby upiększyć wynik:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_INSERT(
@json_doc,
'$.pet.diet[1]',
'Chicken')
); Wynik:
{
"pet":
{
"name": "Fluffy",
"diet":
[
"Fish",
"Chicken",
"Water"
]
}
} Argumenty zerowe
Jeśli pierwszym argumentem jest NULL , wynik to NULL :
SELECT JSON_ARRAY_INSERT(null, '$[1]', 4); Wynik:
+------------------------------------+ | JSON_ARRAY_INSERT(null, '$[1]', 4) | +------------------------------------+ | NULL | +------------------------------------+
To samo dotyczy path argument:
SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4); Wynik:
+--------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |
+--------------------------------------------+
| NULL |
+--------------------------------------------+
Jeśli jednak value argument to NULL , a następnie NULL jest wstawiany do tablicy:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null); Wynik:
+----------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |
+----------------------------------------------+
| [0, null, 1, 2] |
+----------------------------------------------+
Możesz także użyć JSON_ARRAY_APPEND() aby dołączyć wartości do tablicy.