INSTR() în MySQL

Returnează poziția primei apariții a unui subșir; ca LOCATE(), cu parametrii inversați.

Sintaxă
INSTR(sir, cauta)

Ce face INSTR()

INSTR() face același lucru ca LOCATE() cu doi parametri, dar ordinea este inversă: întâi textul, apoi ce cauți. Returnează 0 dacă textul nu apare.

Parametri

Parametru Descriere
sir Textul în care se caută.
cauta Textul căutat.

Ce returnează

Poziția (de la 1) sau 0.

Exemple

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

CREATE TABLE produse (
  id INT PRIMARY KEY,
  cod VARCHAR(20),
  nume VARCHAR(50),
  pret DECIMAL(10,2),
  etichete VARCHAR(100)
);

INSERT INTO produse VALUES
  (1, 'LAP-2026-01', 'Laptop ultraportabil', 3499.90, 'electronice,birou,promo'),
  (2, 'MOU-2025-07', 'Mouse fără fir', 79.50, 'electronice,accesorii'),
  (3, 'SCA-2026-03', 'Scaun ergonomic', 1249.00, 'mobilier,birou'),
  (4, 'CAB-2024-11', 'Cablu USB-C', 35.00, 'accesorii,promo');

Exemplul 1: Produse care conțin un cuvânt

SELECT nume, INSTR(nume, 'fir') AS pozitie
FROM produse
WHERE INSTR(nume, 'fir') > 0;

Rezultat

+------------------+---------+
| nume             | pozitie |
+------------------+---------+
| Mouse fără fir   |      12 |
+------------------+---------+

Exemplul 2: Comparație cu LOCATE

SELECT INSTR('Cluj-Napoca', '-') AS instr, LOCATE('-', 'Cluj-Napoca') AS locate;

Rezultat

+-------+--------+
| instr | locate |
+-------+--------+
|     5 |      5 |
+-------+--------+

Greșeli frecvente

  • Folosești INSTR() pe o coloană mare doar ca să afli dacă textul există. Pentru căutări frecvente, un index FULLTEXT cu MATCH() este mult mai rapid.

Comenzi înrudite

  • LOCATE(): Găsește poziția primei apariții a unui text în alt text (0 dacă lipsește).
  • LIKE: Caută texte după un model: începe cu, se termină cu, conține.
  • MATCH() ... AGAINST(): Căutare full-text în coloane de text, după cuvinte, cu scor de relevanță; are nevoie de un index FULLTEXT.