Ce face JSON_VALUE()
JSON_VALUE() combină extragerea și conversia: RETURNING UNSIGNED, DECIMAL(10,2) sau DATE îți dau direct tipul potrivit pentru calcule și sortări.
Cu DEFAULT ... ON EMPTY alegi ce se întâmplă când calea lipsește.
Parametri
| Parametru | Descriere |
|---|---|
document |
Documentul JSON. |
cale |
Calea către o valoare simplă. |
RETURNING tip |
Opțional. Tipul rezultatului (implicit VARCHAR(512)). |
Ce returnează
Valoarea convertită sau NULL / valoarea implicită.
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: Numere gata de calcul
SELECT JSON_VALUE(date, '$.nume') AS nume,
JSON_VALUE(date, '$.varsta' RETURNING UNSIGNED) + 1 AS varsta_anul_viitor
FROM profiluri
ORDER BY id;
Rezultat
+-------+--------------------+
| nume | varsta_anul_viitor |
+-------+--------------------+
| Ana | 32 |
| Dan | 46 |
| Ioana | 28 |
+-------+--------------------+
Exemplul 2: Valoare implicită când lipsește cheia
SELECT id, JSON_VALUE(date, '$.adresa.nr' RETURNING UNSIGNED DEFAULT 0 ON EMPTY) AS nr
FROM profiluri
ORDER BY id;
Rezultat
+----+------+
| id | nr |
+----+------+
| 1 | 12 |
| 2 | 0 |
| 3 | 0 |
+----+------+
Greșeli frecvente
- Folosești
JSON_VALUE()pe o cale care duce la o listă sau un obiect. Funcția este pentru valori simple; pentru structuri foloseșteJSON_EXTRACT().
Comenzi înrudite
JSON_EXTRACT(): Citește o valoare dintr-un document JSON după o cale ca ‘$.adresa.strada’.Operatorii -> și ->>: Prescurtări pentru citirea din coloane JSON: -> dă JSON, ->> dă text simplu.CAST(): Convertește o valoare într-un alt tip: SIGNED, UNSIGNED, DECIMAL, CHAR, DATE, DATETIME, JSON etc.