PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment rechercher si un mot entier existe dans une chaîne dans Postgres

Vous pouvez utiliser une expression régulière pour cela :

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

Ce qui précède ne renvoie que des valeurs où phone ou samsung sont des mots complets. Les modificateurs regex\m et \M faites en sorte que le motif ne corresponde qu'aux mots entiers.

L'opérateur regex ~* rend cela insensible à la casse. L'expression ci-dessus renverrait Samsung Phone ou Google Phone mais pas Sam's House .

Si vous voulez ajouter plus de mots, ajoutez-les simplement en utilisant l'opérateur "ou" |

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

Notez que ce type de recherche ne va pas être ultra-rapide. Les expressions régulières sont chères, elles ne peuvent utiliser aucun index.