JSON_VALUE() în MySQL

JSON: creare și citire MySQL 8.0.21+

Extrage o valoare simplă din JSON și o convertește direct în tipul dorit (număr, dată, text).

Sintaxă
JSON_VALUE(document, cale [RETURNING tip] [ON EMPTY] [ON ERROR])

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ște JSON_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.