Si vous avez besoin de "combiner avec insensible à la casse", il existe un certain nombre d'options, en fonction de vos besoins exacts.
Peut-être le plus simple, rendre l'index d'expression insensible à la casse.
S'appuyant sur la fonction f_unaccent()
énoncé dans la réponse référencée :
- PostgreSQL prend-il en charge les classements "insensibles aux accents" ?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));
Ensuite :
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Ou vous pouvez construire le lower()
dans la fonction f_unaccent()
, pour dériver quelque chose comme f_lower_unaccent()
.
Ou (surtout si vous avez de toute façon besoin de faire de la correspondance floue), vous pouvez utiliser un index de trigramme fourni par le module supplémentaire pg_trgm s'appuyant sur la fonction ci-dessus, qui prend également en charge ILIKE
. Détails :
- MOINS LIKE vs iLIKE
J'ai ajouté une note à la réponse référencée.
Ou vous pouvez utiliser le module supplémentaire citext :
- Contrainte unique reportable, insensible à la casse