PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL акцент + търсене без значение на малки и големи букви

Ако трябва да „комбинирате с нечувствителни главни букви“, има редица опции, в зависимост от точните ви изисквания.

Може би най-простото е да направите индекса на израза нечувствителен към главните букви.

Въз основа на функцията 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 :

  • Уникално ограничение с възможност за отлагане, независимо от главните букви


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-новите тенденции в PostgreSQL:Най-отнемащи време задачи и важни показатели за проследяване

  2. SQL изберете елементи, където сумата на полето е по-малка от N

  3. Как Cot() работи в PostgreSQL

  4. ~/.psqlrc файл за DBA

  5. Генериране на UUID в оператор Postgres за вмъкване?