JSON_CONTAINS_PATH() în MySQL

Verifică dacă există una sau toate căile date într-un document JSON.

Sintaxă
JSON_CONTAINS_PATH(document, 'one' | 'all', cale[, cale] ...)

Ce face JSON_CONTAINS_PATH()

Cu 'one' e suficient să existe una dintre căi; cu 'all' trebuie să existe toate. Este util pentru a găsi documentele care au (sau nu au) un câmp.

Parametri

Parametru Descriere
document Documentul verificat.
'one' | 'all' Câte căi trebuie să existe.
cale Căile verificate.

Ce returnează

1, 0 sau NULL.

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: Profiluri cu adresă

SELECT date->>'$.nume' AS nume,
       JSON_CONTAINS_PATH(date, 'one', '$.adresa') AS are_adresa,
       JSON_CONTAINS_PATH(date, 'all', '$.nume', '$.email') AS nume_si_email
FROM profiluri
ORDER BY id;

Rezultat

+-------+------------+---------------+
| nume  | are_adresa | nume_si_email |
+-------+------------+---------------+
| Ana   |          1 |             0 |
| Dan   |          0 |             0 |
| Ioana |          0 |             0 |
+-------+------------+---------------+

Greșeli frecvente

  • Confunzi existența căii cu valoarea ei. O cale cu valoarea null există, deci rezultatul este 1.

Comenzi înrudite

  • JSON_CONTAINS(): Verifică dacă un document JSON conține o anumită valoare sau un sub-document.
  • JSON_KEYS(): Returnează lista cheilor unui obiect JSON.