sql >> Database >  >> RDS >> PostgreSQL

Hoe te zoeken of het hele woord bestaat in een string in Postgres

U kunt hiervoor een reguliere expressie gebruiken:

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

Het bovenstaande retourneert alleen waarden waar phone of samsung zijn volledige woorden. De regex-modifiers\m en \M zorg ervoor dat het patroon alleen overeenkomt met hele woorden.

De regex-operator ~* maakt dit hoofdletterongevoelig. De bovenstaande uitdrukking zou Samsung Phone . opleveren of Google Phone maar niet Sam's House .

Als u meer woorden wilt toevoegen, voegt u ze toe met de operator "of" |

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

Merk op dat dit soort zoeken niet supersnel zal zijn. Reguliere expressies zijn duur, ze kunnen geen enkele index gebruiken.



  1. Een optimale omgeving instellen voor PostgreSQL

  2. slqlalchemy UniqueConstraint VS Index (uniek =True)

  3. PostgreSQL maakt index op cast van string tot datum

  4. GROUP_CONCAT met JOINLEFT in Zend Db Select