LOCATE() în MySQL

Găsește poziția primei apariții a unui text în alt text (0 dacă lipsește).

Sintaxă
LOCATE(cauta, sir[, pozitie_start])
POSITION(cauta IN sir)

Ce face LOCATE()

LOCATE() returnează poziția, numărată de la 1, la care apare textul căutat. Dacă nu îl găsește, returnează 0. Al treilea parametru spune de unde să înceapă căutarea.

POSITION(cauta IN sir) este sinonim, cu sintaxa din standardul SQL. Căutarea urmează colația: cu utf8mb4_0900_ai_ci nu contează literele mari și nici diacriticele, deci 's' găsește și 'ș'.

Parametri

Parametru Descriere
cauta Textul căutat.
sir Textul în care se caută.
pozitie_start Opțional. Poziția de la care începe căutarea.

Ce returnează

Poziția găsită sau 0.

Exemple

Exemplul 1: Poziția unui text și sinonimul POSITION

SELECT LOCATE('ov', 'Brașov') AS locate,
       POSITION('ov' IN 'Brașov') AS position,
       LOCATE('x', 'Brașov') AS lipsa;

Rezultat

+--------+----------+-------+
| locate | position | lipsa |
+--------+----------+-------+
|      5 |        5 |     0 |
+--------+----------+-------+

Exemplul 2: Căutare de la o poziție și efectul colației

SELECT LOCATE('a', 'banana', 3) AS de_la_3,
       LOCATE('s', 'Brașov') AS fara_diacritice;

Rezultat

+---------+-----------------+
| de_la_3 | fara_diacritice |
+---------+-----------------+
|       4 |               4 |
+---------+-----------------+

Greșeli frecvente

  • Inversezi parametrii față de INSTR(): la LOCATE() textul căutat este primul, la INSTR() este al doilea.

Comenzi înrudite

  • INSTR(): Returnează poziția primei apariții a unui subșir; ca LOCATE(), cu parametrii inversați.
  • SUBSTRING_INDEX(): Returnează textul dinaintea (sau de după) a N-a apariție a unui separator.
  • LIKE: Caută texte după un model: începe cu, se termină cu, conține.