In MySQL, il JSON_ARRAY_INSERT()
viene utilizzata per inserire un nuovo valore in un array.
Fornisci il documento JSON come primo argomento, seguito dal percorso in cui inserire, seguito dal valore da inserire.
Sintassi
La sintassi è questa:
JSON_INSERT(json_doc, path, val[, path, val] ...)
Dove:
json_doc
è il documento JSON.path
è il percorso dell'elemento in cui inserire il nuovo valore.val
è il nuovo valore che verrà inserito.
Le coppie valore percorso vengono valutate da sinistra a destra. Il documento prodotto dalla valutazione di una coppia diventa il nuovo valore rispetto al quale viene valutata la coppia successiva.
Esempio 1 – Utilizzo di base
Ecco un esempio da dimostrare.
SELECT JSON_ARRAY_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';
Risultato:
+--------------+ | Result | +--------------+ | [1, 4, 2, 3] | +--------------+
Quindi il 3° argomento viene inserito nell'array nel percorso specificato. In questo caso, utilizzo $[1]
per il percorso, che fa riferimento al secondo elemento (gli array JSON utilizzano la numerazione in base zero – la numerazione inizia da 0
).
Esempio 2 – Array nidificato
Ecco un esempio di inserimento di un valore in una matrice nidificata all'interno di un'altra matrice.
SELECT JSON_ARRAY_INSERT('[1, 2, [3, 4]]', '$[2][1]', 5) AS 'Result';
Risultato:
+-------------------+ | Result | +-------------------+ | [1, 2, [3, 5, 4]] | +-------------------+
Quindi qui uso $[2][1]
come il sentiero. Il [2]
si riferisce al 3° elemento dell'array esterno. Il [1]
si riferisce al 2° elemento dell'array nidificato.
Esempio 3:un documento JSON più grande
Questo esempio usa un documento JSON (leggermente) più grande. Questo dimostra come il percorso cambia a seconda di dove si trova l'array all'interno del documento.
SET @data = '{ "Person": { "Name": "Homer", "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_ARRAY_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';
Risultato:
+----------------------------------------------------------------------------------+ | Result | +----------------------------------------------------------------------------------+ | {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} | +----------------------------------------------------------------------------------+