Ако трябва да „комбинирате с нечувствителни главни букви“, има редица опции, в зависимост от точните ви изисквания.
Може би най-простото е да направите индекса на израза нечувствителен към главните букви.
Въз основа на функцията f_unaccent()
изложено в посочения отговор:
- Поддържа ли PostgreSQL съпоставяне с „нечувствителни на акценти“?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));
След това:
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Или можете да създадете lower()
във функцията f_unaccent()
, за да извлечете нещо като f_lower_unaccent()
.
Или (особено ако все пак трябва да направите размито съвпадение на шаблон) можете да използвате индекс на триграма, предоставен от допълнителния модул pg_trgm надграждане на горната функция, която също поддържа ILIKE
. Подробности:
- НИСКИ LIKE срещу iLIKE
Добавих бележка към посочения отговор.
Или можете да използвате допълнителния модул citext :
- Уникално ограничение с възможност за отлагане, независимо от главните букви