Ответ 1
Если вам нужно "комбинировать с регистрозависимым", в зависимости от ваших конкретных требований существует ряд опций.
Может быть, простейший, сделать регистр индекса нечувствительным.
Основываясь на функции f_unaccent()
, изложенной в ответе с ссылкой:
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
. Подробности:
Я добавил примечание к ответу.
Или вы можете использовать дополнительный модуль citext: