Nikdy nevíš, kdy to přijde
Zobrazit menu   MENU

14. Regulární výrazy

Regulární výrazy nám v MySQL slouží k vyhledávání v textu podle komplikovaných vzorů. Jde o podobný způsob jako operátor LIKE ale s mnohem většími možnostmi. Pokud se v regulárních výrazech příliš navyznáte, dobrý informační zdroj je například seriál na serveru root.cz.

Pro práci s regulárními výrazy budeme používat klauzuli REGEXP, kterou si vyzkoušíme nad naší tabulkou autori:

SELECT * FROM `autori`
WHERE prijmeni REGEXP '^S';


Tento dotaz nám vrátí autory, jejichž příjmení začíná na znak S:

+----------+----------+----------+
| autor_id | jmeno    | prijmeni |
+----------+----------+----------+
|        3 | Ladislav | Smoljak  |
|        4 | Zdeněk   | Svěrák   |
+----------+----------+----------+


Pokud bychom chtěli vyhledávat opačně, tedy dostat řádky které nesplňují vzor, použijeme NOT REGEXP:

SELECT * FROM `autori`
WHERE jmeno NOT REGEXP ' ';


Tímto dotazem získáme autory, u nichž ve sloupci jméno není obsažena mezera:
+----------+----------+------------------+
| autor_id | jmeno    | prijmeni         |
+----------+----------+------------------+
|        1 | Frank    | Herbert          |
|        2 | Antoine  | de Saint-Exupéry |
|        3 | Ladislav | Smoljak          |
|        4 | Zdeněk   | Svěrák           |
|        6 | Elio     | García           |
|        7 | Linda    | Antonsson        |
+----------+----------+------------------+


Místo výrazů REGEXP a NOT REGEXP můžeme také použít aliasy RLIKE a NOT RLIKE které jsou zcela totožné.


Využití regulárních výrazů při dotazech v MySQL databázi není přiliš časté. Pokud už něco takové potřebujeme, většinou si lze vystačit s operátorem LIKE. Pro velmi specifické případy ale mohou být regulární výrazy užitečné.

Hledáte webový hosting? Doporučujeme:




Další díly tutoriálu

12. Poddotazy
13. Fulltextové vyhledávání
14. Regulární výrazy
15. Operace nad vybranými daty
16. Výběr dat - co se jinam nevešlo