Als u moet "combineren met niet-hoofdlettergevoelig", zijn er een aantal opties, afhankelijk van uw exacte vereisten.
Misschien het eenvoudigst, maak de expressie index hoofdletterongevoelig.
Voortbouwend op de functie f_unaccent() uiteengezet in het antwoord waarnaar wordt verwezen:
- Ondersteunt PostgreSQL "accentongevoelige" sorteringen?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name))); Dan:
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Of je zou de lower() . kunnen bouwen in de functie f_unaccent() , om iets als f_lower_unaccent() . af te leiden .
Of (vooral als je toch vage patronen moet matchen) kun je een trigram-index gebruiken die wordt geleverd door de extra module pg_trgm voortbouwend op bovenstaande functie, die ook ILIKE . ondersteunt . Details:
- LAGER LIKE vs iLIKE
Ik heb een notitie toegevoegd aan het antwoord waarnaar wordt verwezen.
Of je zou de extra module citext kunnen gebruiken :
- Uitstelbare, hoofdletterongevoelige unieke beperking