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