Mysql
 sql >> Database >  >> RDS >> Mysql

JSON_ARRAY_INSERT() – Inserisci valori in un array JSON in MySQL

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"]}} |
+----------------------------------------------------------------------------------+