REGEXP_INSTR() în MySQL

Expresii regulate MySQL 8.0.4+

Returnează poziția la care începe (sau se termină) o potrivire cu o expresie regulată.

Sintaxă
REGEXP_INSTR(expresie, tipar[, pozitie[, aparitie[, tip_rezultat[, optiuni]]]])

Ce face REGEXP_INSTR()

REGEXP_INSTR() este echivalentul lui INSTR() pentru expresii regulate. Returnează poziția primului caracter al potrivirii sau 0 dacă nu există.

Cu tip_rezultat = 1, returnează poziția de după sfârșitul potrivirii.

Parametri

Parametru Descriere
expresie Textul în care se caută.
tipar Expresia regulată.
pozitie Opțional. De unde începe căutarea.
aparitie Opțional. A câta potrivire.
tip_rezultat Opțional. 0 = începutul potrivirii (implicit), 1 = poziția de după ea.
optiuni Opțional. Ca la REGEXP_LIKE().

Ce returnează

Poziția (de la 1) sau 0.

Exemple

Exemplul 1: Unde încep și unde se termină cifrele

SELECT REGEXP_INSTR('Factura DEX-001024', '[0-9]+') AS inceput,
       REGEXP_INSTR('Factura DEX-001024', '[0-9]+', 1, 1, 1) AS dupa_final;

Rezultat

+---------+------------+
| inceput | dupa_final |
+---------+------------+
|      13 |         19 |
+---------+------------+

Greșeli frecvente

  • Folosești REGEXP_INSTR() > 0 doar ca să afli dacă există o potrivire. REGEXP_LIKE() exprimă asta mai clar.

Comenzi înrudite

  • REGEXP_SUBSTR(): Returnează bucata de text care se potrivește cu o expresie regulată.
  • INSTR(): Returnează poziția primei apariții a unui subșir; ca LOCATE(), cu parametrii inversați.
  • LOCATE(): Găsește poziția primei apariții a unui text în alt text (0 dacă lipsește).