PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como pesquisar se existe uma palavra inteira em uma string no Postgres


Você pode usar uma expressão regular para isso:
where title ~* '(\mphone\M)|(\msamsung\M)'

O acima apenas retorna valores onde phone ou samsung são palavras completas. Os modificadores de regex\m e \M faça com que o padrão corresponda apenas a palavras inteiras.

O operador regex ~* torna isso insensível a maiúsculas e minúsculas. A expressão acima retornaria Samsung Phone ou Google Phone mas não Sam's House .

Se você quiser adicionar mais palavras, basta adicioná-las usando o operador "ou" |
where title ~* '(\mphone\M)|(\msamsung\M)|(\mbhat\M)'

Observe que esse tipo de pesquisa não será super-rápido. Expressões regulares são caras e não podem usar nenhum índice.