PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come cercare se esiste una parola intera in una stringa in Postgres

Puoi usare un'espressione regolare per questo:

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

Quanto sopra restituisce solo valori dove phone o samsung sono parole complete I modificatori regex\m e \M fai in modo che il modello corrisponda solo per parole intere.

L'operatore regex ~* rende questo case-insensitive. L'espressione sopra restituirà Samsung Phone o Google Phone ma non Sam's House .

Se vuoi aggiungere più parole, aggiungile semplicemente usando l'operatore "or" |

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

Nota che questo tipo di ricerca non sarà super veloce. Le espressioni regolari sono costose, non possono utilizzare alcun indice.