Ce face JSON_SET()
JSON_SET() este funcția de modificare folosită cel mai des. Pentru fiecare pereche cale-valoare: dacă există, înlocuiește; dacă nu există, adaugă.
Variantele stricte: JSON_INSERT() doar adaugă, JSON_REPLACE() doar înlocuiește.
Parametri
| Parametru | Descriere |
|---|---|
document |
Documentul modificat. |
cale, valoare |
Perechi de cale și valoare nouă. |
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: Actualizarea unui profil
UPDATE profiluri
SET date = JSON_SET(date, '$.varsta', 32, '$.email', 'ana@exemplu.ro')
WHERE id = 1;
SELECT date->>'$.varsta' AS varsta, date->>'$.email' AS email FROM profiluri WHERE id = 1;
Rezultat
+--------+----------------+
| varsta | email |
+--------+----------------+
| 32 | ana@exemplu.ro |
+--------+----------------+
Greșeli frecvente
- Uiți să salvezi rezultatul.
JSON_SET()nu modifică tabelul; returnează documentul nou, pe care îl scrii cuUPDATE ... SET col = JSON_SET(col, ...).
Comenzi înrudite
JSON_INSERT(): Adaugă valori în JSON doar unde cheile nu există; valorile existente rămân neschimbate.JSON_REPLACE(): Înlocuiește doar valorile care există deja în JSON; căile inexistente sunt ignorate.JSON_REMOVE(): Șterge chei sau elemente dintr-un document JSON.