Funkce hledá v řetězci znaků text část popsanou regulárním výrazem pattern.
Funkce je postavena na knihovně PCRE (Perl-Compatible Regular Expression) odpovídající verzi 5.8 programu PERL.
Regulární výraz musí být vytvořen podle pravidel jazyka PERL. Ve stručnosti:
Znaky ^ a $ na začátku a konci regulárního výrazu dovolují jej "zakotvit" tak, že musí pokrývat celý rozsah textu od začátku resp. do konce. Funkce tedy může hledat substring, prefix, suffix nebo shodu celého textu s regulárním výrazem.
Pokud text nebo regulární výraz nejsou v Unicode, pak se předpokládá, že regulární výraz lze zkonvertovat do znakové sady textu.
Je-li uveden parametr options, pak obsahuje znaky, které upravují fungování regulárního výrazu:
Prohledávání textu pomocí regulárního výrazu je rychlé v tom smyslu, že bez ohledu na složitost výrazu se text prochází v lineárním čase (tj. v čase přímo úměrném jeho délce). Vyhledávání v textech pomocí podmínek zadaných regulárním výrazem však nevyužívá indexy a proto vede na postupné prohledávání jednoho textu po druhém. V rozsáhlých textových databázích to není příliš efektivní metoda, alternativnou může být použití fulltextových nástrojů.
Funkce REGEXP_LIKE je flexibilnější a efektivnější než funkce LIKE.
Funkce vrací výsledek srovnání textu s regulárním výrazem - TRUE pokud si odpovídají, FALSE pokud ne. Funkce vrátí UNKNOWN pokud je v syntaxi regulárního výrazu chyba.
SELECT * FROM Txtab WHERE Regexp_like(name, 'A(be|braham|\.) +Lincoln', 'i')
Dotaz vybere z tabulky Txtab ty řádky, které ve sloupci Name obsahují řetězec 'Abe Lincoln', 'Abraham Lincoln' nebo 'A. Lincoln', přičemž mezi oběma slovy smí být jedna nebo více mezer. Velikost písmen se přitom ignoruje.
SELECT jmeno FROM Adresy WHERE REGEXP_LIKE(jmeno,'\b[sš][tť]astn[yýaá]','i');
Dotaz vybere z tabulky Adresy osoby s příjmením Šťastný nebo Šťastná. Protože při vkládání mohlo dojít ke zkomolení diakritiky, hledají se i kombinace bez diakritiky. Aby nedošlo k vybrání příjmení např. Nešťastný, konstrukce /b na začátku regulárního výrazu určí, že před [sš] je hranice slova. Vyhoví jména: 'Šťastný', 'Stastny', 'Ing. Jan Šťastný', 'Stastna-Mala', 'STASTNA', 'Jiří Šťastný, CSc', 'stastny'.
SELECT firma FROM Adresy WHERE REGEXP_LIKE(firma,'[0-9]+'); //WHERE REGEXP_LIKE(firma,'[0-9]{1,}'); //WHERE REGEXP_LIKE(firma,'[[:digit:]]+'); //WHERE REGEXP_LIKE(firma,'\d+');
Dotaz vybere z tabulky Adresy ty firmy, které mají ve svém názvu alespoň jednu číslici. Vyhoví názvy: 'Software602 a.s.', 'TELE3', 'VÚ 1444', 'Závody 29.augusta, s.p.'. V ukázce jsou použity 4 ekvivalentní zápisy regulárního výrazu.