JSON_REMOVE() în MySQL

JSON: modificare MySQL 5.7.8+

Șterge chei sau elemente dintr-un document JSON.

Sintaxă
JSON_REMOVE(document, cale[, cale] ...)

Ce face JSON_REMOVE()

JSON_REMOVE() elimină valorile de la căile date. Căile se aplică pe rând, deci la liste indicii se schimbă după fiecare ștergere.

Parametri

Parametru Descriere
document Documentul modificat.
cale Una sau mai multe căi de șters.

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: Ștergerea unei chei și a unui element din listă

SELECT JSON_REMOVE(date, '$.adresa', '$.hobby[0]') AS fara_adresa
FROM profiluri
WHERE id = 1;

Rezultat

+--------------------------------------------------------------------+
| fara_adresa                                                        |
+--------------------------------------------------------------------+
| {"nume": "Ana", "oras": "Iași", "hobby": ["înot"], "varsta": 31}   |
+--------------------------------------------------------------------+

Greșeli frecvente

  • Ștergi mai multe elemente dintr-o listă cu indici crescători ('$[0]', '$[1]'). După prima ștergere indicii se mută; șterge de la indicele cel mai mare spre cel mic.

Comenzi înrudite

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