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é.


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