PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Akcent PostgreSQL + wyszukiwanie bez uwzględniania wielkości liter

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać dynamicznych nazw kolumn w instrukcji UPDATE lub SELECT w funkcji?

  2. Poprawa szybkości zapytań:prosty SELECT w dużej tabeli postgres

  3. Jak obliczyć średnią kroczącą w PostgreSQL

  4. [Wideo] Moc indeksowania w PostgreSQL

  5. Uporządkowana liczba kolejnych powtórzeń/duplikatów