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