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

Как да търсите дали цялата дума съществува в низ в Postgres

Можете да използвате регулярен израз за това:

where title ~* '(\mphone\M)|(\msamsung\M)'

Горното връща само стойности, където phone или samsung са пълни думи. Модификаторите на регулярни изрази\m и \M направете модела да съвпада само за цели думи.

Операторът на регулярен израз ~* прави този регистър без значение. Горният израз би върнал Samsung Phone или Google Phone но не и Sam's House .

Ако искате да добавите още думи, просто ги добавете с помощта на оператора "или" |

where title ~* '(\mphone\M)|(\msamsung\M)|(\mbhat\M)'

Имайте предвид, че този вид търсене няма да бъде супер бързо. Регулярните изрази са скъпи, те не могат да използват никакъв индекс.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Предимства на ENUM спрямо връзка "един към много"?

  2. Обединяване с функция за връщане на набор (SRF) и колони за достъп в SQLAlchemy

  3. Премахване на подготвени заявки

  4. Масивът TypeORM не се поддържа в postgres?

  5. Извличане на данни от PostgreSQL DB без използване на pg_dump