sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man söker om hela ord finns i en sträng i Postgres

Du kan använda ett reguljärt uttryck för detta:

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

Ovanstående returnerar endast värden där phone eller samsung är fullständiga ord. Regex-modifierarna\m och \M gör att mönstret bara matchar hela ord.

Regexoperatorn ~* gör detta skiftlägesokänsligt. Ovanstående uttryck skulle returnera Samsung Phone eller Google Phone men inte Sam's House .

Om du vill lägga till fler ord, lägg bara till dem med "eller"-operatorn |

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

Observera att den här typen av sökning inte kommer att vara supersnabb. Reguljära uttryck är dyra, de kan inte använda något index.



  1. Fråga returnerar inga resultat endast när ORDER BY har lagts till

  2. Bästa sättet att lagra ett base64-kodat värde i MySQL DB?

  3. SQL Server Cursor Types - Framåt endast dynamisk markör | SQL Server Tutorial / TSQL Tutorial

  4. SQL-frågan går sönder av någon anledning