JSON_LENGTH() în MySQL

Numărul de elemente al unei liste sau numărul de chei al unui obiect JSON.

Sintaxă
JSON_LENGTH(document[, cale])

Ce face JSON_LENGTH()

JSON_LENGTH() numără elementele de pe primul nivel. O valoare simplă (număr, text) are lungimea 1.

Parametri

Parametru Descriere
document Documentul JSON.
cale Opțional. Partea numărată.

Ce returnează

Un număr întreg sau NULL dacă nu există calea.

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: Câte hobby-uri are fiecare

SELECT date->>'$.nume' AS nume, JSON_LENGTH(date, '$.hobby') AS hobby, JSON_LENGTH(date) AS chei
FROM profiluri
ORDER BY id;

Rezultat

+-------+-------+------+
| nume  | hobby | chei |
+-------+-------+------+
| Ana   |     2 |    5 |
| Dan   |     1 |    4 |
| Ioana |     0 |    4 |
+-------+-------+------+

Greșeli frecvente

  • Te aștepți ca JSON_LENGTH() să numere și elementele din obiectele imbricate. Numără doar primul nivel.

Comenzi înrudite

  • JSON_KEYS(): Returnează lista cheilor unui obiect JSON.
  • JSON_DEPTH(): Adâncimea maximă a unui document JSON (câte niveluri de liste/obiecte are).
  • JSON_TYPE(): Tipul unei valori JSON: OBJECT, ARRAY, STRING, INTEGER, DOUBLE, BOOLEAN, NULL etc.