JSON_SEARCH() în MySQL

Caută un text în valorile unui document JSON și returnează calea (sau căile) unde apare.

Sintaxă
JSON_SEARCH(document, 'one' | 'all', text_cautat[, escape[, cale]])

Ce face JSON_SEARCH()

JSON_SEARCH() găsește unde se află o valoare de tip text. Textul căutat poate folosi % și _, ca la LIKE.

Parametri

Parametru Descriere
document Documentul în care se caută.
'one' | 'all' Prima cale sau toate.
text_cautat Textul (cu % și _).

Ce returnează

Calea sau lista de căi; NULL dacă nu găsește.

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: Unde apare un text

SELECT JSON_SEARCH(date, 'one', 'înot') AS prima,
       JSON_SEARCH(date, 'all', '%i%') AS toate_cu_i
FROM profiluri
WHERE id = 1;

Rezultat

+--------------+--------------------------+
| prima        | toate_cu_i               |
+--------------+--------------------------+
| "$.hobby[1]" | ["$.oras", "$.hobby[0]"] |
+--------------+--------------------------+

Greșeli frecvente

  • Cauți numere cu JSON_SEARCH(). Funcția caută doar în valorile de tip text.

Comenzi înrudite

  • JSON_CONTAINS(): Verifică dacă un document JSON conține o anumită valoare sau un sub-document.
  • JSON_EXTRACT(): Citește o valoare dintr-un document JSON după o cale ca ‘$.adresa.strada’.