LIKE în MySQL

Condiții în WHERE Toate versiunile MySQL și MariaDB

Caută texte după un model: începe cu, se termină cu, conține.

Sintaxă
WHERE coloana LIKE 'model';

Ce face LIKE

LIKE compară un text cu un model în care două caractere au rol special: % înseamnă „oricâte caractere” (inclusiv niciunul), iar _ înseamnă „exact un caracter”.

Modele uzuale: 'Mon%' (începe cu „Mon”), '%ro' (se termină cu „ro”), '%top%' (conține „top”). Cu NOT LIKE obții rândurile care nu se potrivesc.

Cu setările obișnuite ale tabelelor (colaționare _ci), LIKE nu ține cont de literele mari și mici.

Parametri

Parametru Descriere
model Textul căutat, cu % și _.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE clienti (
  id INT PRIMARY KEY,
  nume VARCHAR(50) NOT NULL,
  oras VARCHAR(30),
  email VARCHAR(100)
);

INSERT INTO clienti VALUES
  (1, 'Ana Pop', 'Cluj', 'ana@exemplu.ro'),
  (2, 'Bogdan Ionescu', 'Sibiu', NULL),
  (3, 'Cristina Marin', 'Cluj', 'cristina@exemplu.ro'),
  (4, 'Dan Stoica', 'Arad', NULL);

Exemplul 1: Începe cu, conține

SELECT nume FROM clienti WHERE nume LIKE 'Ana%';

SELECT nume FROM clienti WHERE nume LIKE '%escu%';

Rezultat

+---------+
| nume    |
+---------+
| Ana Pop |
+---------+
+----------------+
| nume           |
+----------------+
| Bogdan Ionescu |
+----------------+

Exemplul 2: Adrese de e-mail pe un anumit domeniu

SELECT nume, email FROM clienti WHERE email LIKE '%@exemplu.ro' ORDER BY nume;

Rezultat

+----------------+---------------------+
| nume           | email               |
+----------------+---------------------+
| Ana Pop        | ana@exemplu.ro      |
| Cristina Marin | cristina@exemplu.ro |
+----------------+---------------------+

Exemplul 3: Exact un caracter cu _

SELECT nume, oras FROM clienti WHERE oras LIKE 'C_uj';

Rezultat

+----------------+------+
| nume           | oras |
+----------------+------+
| Ana Pop        | Cluj |
| Cristina Marin | Cluj |
+----------------+------+

Greșeli frecvente

  • Folosești LIKE '%text%' pe tabele mari. Un model care începe cu % nu poate folosi indexul, deci MySQL citește tot tabelul. Pentru căutări în texte lungi, folosește un index FULLTEXT.
  • Cauți chiar caracterul % sau _. Pune o bară inversă în față: LIKE '%10\%%'.

Comenzi înrudite

  • WHERE: Filtrează rândurile: păstrează doar rândurile care îndeplinesc o condiție.
  • IN: Verifică dacă o valoare se află într-o listă. Înlocuiește mai multe condiții OR.
  • CONCAT: Lipește mai multe texte într-unul singur.