In MariaDB, JSON_ARRAY_INSERT() is een ingebouwde functie die een waarde invoegt in een JSON-document en het resultaat retourneert.
Syntaxis
De syntaxis gaat als volgt:
JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)
Waar json_doc is het JSON-document, path is het pad naar waar u de waarde(n) wilt invoegen, en value is de waarde die moet worden ingevoegd.
Voorbeeld
Hier is een voorbeeld om te demonstreren.
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3); Resultaat:
+-------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |
+-------------------------------------------+
| [0, 3, 1, 2] |
+-------------------------------------------+
In dit geval is de waarde 3 werd ingevoegd in de array op positie 1 . Arrays zijn gebaseerd op nul, dus het wordt het tweede element in de array.
Vul meerdere waarden in
U kunt meerdere waarden invoegen binnen een enkele aanroep naar JSON_ARRAY_INSERT() .
Voorbeeld:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5); Resultaat:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |
+------------------------------------------------------+
| [4, 0, 5, 1, 2] |
+------------------------------------------------------+ De evaluatie wordt van links naar rechts uitgevoerd.
Dit is wat er gebeurt als we het path veranderen /value argumenten rond:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4); Resultaat:
+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |
+------------------------------------------------------+
| [4, 0, 1, 5, 2] |
+------------------------------------------------------+ Meerdere arrays
U kunt waarden invoegen in meer dan één array binnen dezelfde aanroep naar JSON_ARRAY_INSERT() .
Voorbeeld:
SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';
SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5); Resultaat:
+--------------------------------------------------------+
| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |
+--------------------------------------------------------+
| {"a": [0, 4, 1], "b": [2, 3, 5]} |
+--------------------------------------------------------+ Geneste arrays
Hier is een voorbeeld van het invoegen van een waarde in een geneste array:
SET @json_doc = '[0, 1, [2, 3]]';
SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4); Resultaat:
+--------------------------------------------+ | JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) | +--------------------------------------------+ | [0, 1, [2, 4, 3]] | +--------------------------------------------+
Groter JSON-document
Hier is een voorbeeld met een iets groter JSON-document.
Ik gebruik ook JSON_DETAILED() om het resultaat mooier te maken:
SET @json_doc = '{
"pet": {
"name": "Fluffy",
"diet": ["Fish", "Water"]
}
}';
SELECT JSON_DETAILED(
JSON_ARRAY_INSERT(
@json_doc,
'$.pet.diet[1]',
'Chicken')
); Resultaat:
{
"pet":
{
"name": "Fluffy",
"diet":
[
"Fish",
"Chicken",
"Water"
]
}
} Nullargumenten
Als het eerste argument NULL . is , het resultaat is NULL :
SELECT JSON_ARRAY_INSERT(null, '$[1]', 4); Resultaat:
+------------------------------------+ | JSON_ARRAY_INSERT(null, '$[1]', 4) | +------------------------------------+ | NULL | +------------------------------------+
Hetzelfde geldt voor het path argument:
SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4); Resultaat:
+--------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |
+--------------------------------------------+
| NULL |
+--------------------------------------------+
Als de value argument is NULL , dan NULL wordt ingevoegd in de array:
SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null); Resultaat:
+----------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |
+----------------------------------------------+
| [0, null, 1, 2] |
+----------------------------------------------+
U kunt ook JSON_ARRAY_APPEND() . gebruiken om waarden aan een array toe te voegen.