JSON_ARRAY_APPEND() în MySQL

JSON: modificare MySQL 5.7.9+

Adaugă o valoare la sfârșitul unei liste JSON.

Sintaxă
JSON_ARRAY_APPEND(document, cale, valoare[, cale, valoare] ...)

Ce face JSON_ARRAY_APPEND()

JSON_ARRAY_APPEND() pune valoarea la finalul listei aflate la calea dată. Dacă la cale este o valoare simplă, aceasta devine o listă cu două elemente.

Parametri

Parametru Descriere
document Documentul modificat.
cale, valoare Lista și elementul adăugat.

Ce returnează

Documentul nou.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE profiluri (
  id INT PRIMARY KEY,
  date JSON
);

INSERT INTO profiluri VALUES
  (1, '{"nume": "Ana", "oras": "Iași", "varsta": 31, "hobby": ["citit", "înot"], "adresa": {"strada": "Lăpușneanu", "nr": 12}}'),
  (2, '{"nume": "Dan", "oras": "Cluj", "varsta": 45, "hobby": ["ciclism"]}'),
  (3, '{"nume": "Ioana", "oras": "Iași", "varsta": 27, "hobby": []}');

Exemplul 1: Un hobby nou

UPDATE profiluri SET date = JSON_ARRAY_APPEND(date, '$.hobby', 'șah') WHERE id = 2;

SELECT date->'$.hobby' AS hobby FROM profiluri WHERE id = 2;

Rezultat

+---------------------+
| hobby               |
+---------------------+
| ["ciclism", "șah"]  |
+---------------------+

Greșeli frecvente

  • Folosești JSON_SET(date, '$.hobby[2]', ...) ca să adaugi la final; trebuie să știi lungimea listei. JSON_ARRAY_APPEND() nu are nevoie de ea.

Comenzi înrudite

  • JSON_ARRAY_INSERT(): Inserează o valoare într-o listă JSON la o poziție dată, mutând restul elementelor.
  • JSON_ARRAY(): Construiește o listă (array) JSON din valorile date.
  • JSON_SET(): Setează valori în JSON: le înlocuiește dacă există și le adaugă dacă lipsesc.