Jeśli chcesz „połączyć z nieuwzględniającą wielkości liter”, istnieje wiele opcji, w zależności od Twoich dokładnych wymagań.
Może najprościej, nie uwzględniaj wielkości liter w indeksie wyrażenia.
Opierając się na funkcji f_unaccent()
przedstawione w przywołanej odpowiedzi:
- Czy PostgreSQL obsługuje sortowanie „niewrażliwe na akcent”?
CREATE INDEX users_lower_unaccent_name_idx ON users(lower(f_unaccent(name)));
Następnie:
SELECT *
FROM users
WHERE lower(f_unaccent(name)) = lower(f_unaccent('João'));
Lub możesz zbudować lower()
do funkcji f_unaccent()
, aby uzyskać coś takiego jak f_lower_unaccent()
.
Lub (zwłaszcza jeśli i tak musisz wykonać rozmyte dopasowywanie wzorców) możesz użyć indeksu trygramu dostarczonego przez dodatkowy moduł pg_trgm budowanie na powyższej funkcji, która obsługuje również ILIKE
. Szczegóły:
- MNIEJSZE PODOBNE vs iLIKE
Dodałem notatkę do przywołanej odpowiedzi.
Lub możesz użyć dodatkowego modułu citext :
- Odroczone, unikatowe ograniczenie bez uwzględniania wielkości liter