Pokud potřebujete "kombinovat s rozlišováním malých a velkých písmen", existuje řada možností v závislosti na vašich přesných požadavcích.
Možná nejjednodušší je, aby se v indexu výrazu nerozlišovala malá a velká písmena.
Na základě funkce f_unaccent() uvedeno v odkazované odpovědi:
- Podporuje PostgreSQL kolace „necitlivá na akcent“?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name))); Potom:
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Nebo můžete vytvořit lower() do funkce f_unaccent() , odvodit něco jako f_lower_unaccent() .
Nebo (zejména v případě, že přesto potřebujete provést fuzzy porovnávání vzorů) můžete použít index trigramů, který poskytuje doplňkový modul pg_trgm staví na výše uvedené funkci, která také podporuje ILIKE . Podrobnosti:
- LOWER LIKE vs. ILIKE
K odkazované odpovědi jsem přidal poznámku.
Nebo můžete použít doplňkový modul citext :
- Odložitelné jedinečné omezení nerozlišující malá a velká písmena