Ce face Operatorii -> și ->>
coloana->'$.cale' este prescurtarea pentru JSON_EXTRACT(coloana, '$.cale'). Rezultatul păstrează ghilimelele textelor.
coloana->>'$.cale' este prescurtarea pentru JSON_UNQUOTE(JSON_EXTRACT(...)) și dă text simplu, potrivit pentru afișare, comparații și sortare. Operatorii funcționează doar cu o coloană în stânga, nu cu orice expresie.
Parametri
| Parametru | Descriere |
|---|---|
cale |
Calea JSON, ex. '$.adresa.nr'. |
Ce returnează
Valoarea JSON (->) sau textul ei (->>).
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: Diferența dintre -> și ->>
SELECT id, date->'$.oras' AS cu_ghilimele, date->>'$.oras' AS text_simplu
FROM profiluri
ORDER BY id;
Rezultat
+----+--------------+-------------+
| id | cu_ghilimele | text_simplu |
+----+--------------+-------------+
| 1 | "Iași" | Iași |
| 2 | "Cluj" | Cluj |
| 3 | "Iași" | Iași |
+----+--------------+-------------+
Exemplul 2: Filtrare și sortare după câmpuri JSON
SELECT date->>'$.nume' AS nume, date->>'$.varsta' AS varsta
FROM profiluri
WHERE date->>'$.oras' = 'Iași'
ORDER BY CAST(date->>'$.varsta' AS UNSIGNED);
Rezultat
+-------+--------+
| nume | varsta |
+-------+--------+
| Ioana | 27 |
| Ana | 31 |
+-------+--------+
Greșeli frecvente
- Sortezi după
date->>'$.varsta'fără conversie. Rezultatul este text, deci „100” vine înainte de „27”. Convertește cuCAST(... AS UNSIGNED).
Comenzi înrudite
JSON_EXTRACT(): Citește o valoare dintr-un document JSON după o cale ca ‘$.adresa.strada’.JSON_UNQUOTE(): Elimină ghilimelele unui șir JSON și transformă secvențele \n, \” în caractere normale.JSON_VALUE(): Extrage o valoare simplă din JSON și o convertește direct în tipul dorit (număr, dată, text).