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

Z PostgreSQL
Verze z 1. 11. 2007, 01:00, kterou vytvořil imported>WikiSysop
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledává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.