4.08 Jak použít case-(in)sensitive regulární výraz? Jak použít index pro case insensitive hledání?

Z PostgreSQL
Přejít na: navigace, hledání

Vyhledávání prostřednictvím regulárních vzorů zajišťuje operátor ~, který je case-sensitive. Jeho case-insensitive varianta je operátor ~*. Case-insensitive variací operátoru LIKE je operátor ILIKE.

Case-insensitive vyhledání se řeší:

SELECT *
FROM tab
WHERE lower(col) = 'abc';

Tento dotaz nepoužije standardní index. Musíte použít tzv. funkcionální index:

CREATE INDEX tabindex ON tab (lower(col));

Pokud index vytvoříme jako unikátní, tak můžeme ukládat řetězce obsahující malá i velká písmena, ale nikoliv řetězce, které se od sebe odlišují jen v malých a velkých písmenech. K zajištění zápisu řetězce obsahující pouze malá nebo pouze velká písmena použijte CHECK kontroly nebo triggery.