Om du behöver "kombinera med skiftlägesokänslig" finns det ett antal alternativ, beroende på dina exakta krav.
Kanske enklast, gör uttrycket index skiftlägesokänsligt.
Bygger på funktionen f_unaccent()
anges i det refererade svaret:
- Stöder PostgreSQL "accentokänsliga" sammanställningar?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));
Sedan:
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Eller du kan bygga lower()
till funktionen f_unaccent()
, för att härleda något som f_lower_unaccent()
.
Eller (speciellt om du ändå behöver göra suddiga mönstermatchningar) kan du använda ett trigramindex som tillhandahålls av tilläggsmodulen pg_trgm bygger på ovanstående funktion, som också stöder ILIKE
. Detaljer:
- LÄNDR LIKE vs iLIKE
Jag lade till en anteckning till det refererade svaret.
Eller du kan använda tilläggsmodulen citext :
- Uppskjutbar, skiftlägesokänslig unik begränsning