I MariaDB, JSON_ARRAY_INSERT() er en indbygget funktion, der indsætter en værdi i et JSON-dokument og returnerer resultatet.
Syntaks
Syntaksen ser sådan ud:
JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)
Hvor json_doc er JSON-dokumentet, path er stien til hvor du vil indsætte værdien/værdierne og value er værdien, der skal indsættes.
Eksempel
Her er et eksempel til at demonstrere.
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3); Resultat:
+----------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |+-------------------------------- ----------------+| [0, 3, 1, 2] |+---------------------------------------------- ----+
I dette tilfælde værdien 3 blev indsat i arrayet på position 1 . Arrays er nulbaserede, så det bliver det andet element i arrayet.
Indsæt flere værdier
Du kan indsætte flere værdier inden for et enkelt kald til JSON_ARRAY_INSERT() .
Eksempel:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5); Resultat:
+---------------------------------------------- --------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |+------------------------ ------------------------------------+| [4, 0, 5, 1, 2] |+--------------------------------------------- ------------------+ Evaluering udføres fra venstre mod højre.
Her er, hvad der sker, hvis vi skifter path /value argumenter omkring:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4); Resultat:
+---------------------------------------------- --------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |+------------------------ ------------------------------------+| [4, 0, 1, 5, 2] |+-------------------------------------------- ------------------+ Flere arrays
Du kan indsætte værdier i mere end én matrix inden for samme opkald til JSON_ARRAY_INSERT() .
Eksempel:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5); Resultat:
+------------------------------------------------------ ----------+| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |+--------------------- -----------------------------------+| {"a":[0, 4, 1], "b":[2, 3, 5]} |+---------------------- ----------------------------------+ Indlejrede arrays
Her er et eksempel på indsættelse af en værdi i et indlejret array:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4); Resultat:
+----------------------------------------------------+| JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) |+------------------------------ --------------+| [0, 1, [2, 4, 3]] |+----------------------------------------- ----------+
Større JSON-dokument
Her er et eksempel med et lidt større JSON-dokument.
Jeg bruger også JSON_DETAILED() for at forskønne resultatet:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_INSERT(
@json_doc,
'$.pet.diet[1]',
'Chicken')
); Resultat:
{ "kæledyr":{ "name":"Fluffy", "diæt":[ "Fisk", "Kylling", "Vand" ] }} Nul-argumenter
Hvis det første argument er NULL , resultatet er NULL :
SELECT JSON_ARRAY_INSERT(null, '$[1]', 4); Resultat:
+--------------------------------------------+| JSON_ARRAY_INSERT(null, '$[1]', 4) |+---------------------------------------- -+| NULL |+--------------------------------------------+
Det samme gælder for path argument:
SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4); Resultat:
+----------------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |+------------------------------ --------------+| NULL |+----------------------------------------------------+
Men hvis value argumentet er NULL , derefter NULL er indsat i arrayet:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null);
Resultat:
+---------------------------------------------- +| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |+-------------------------------- -------------------+| [0, null, 1, 2] |+---------------------------------------------- -------+
Du kan også bruge JSON_ARRAY_APPEND() for at tilføje værdier til en matrix.