sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL Omvänd LIKE

Ditt enkla fall kan lösas med en enkel fråga med ANY konstruktion och ~* :

SELECT *
FROM   tbl
WHERE  col ~* ANY (string_to_array('The ships hung in the sky ... bricks don’t', ' '));

~* är den skiftlägesokänsliga matchningsoperatorn för reguljära uttryck. Jag använder det istället för ILIKE så vi kan använda originalord i din sträng utan att behöva fylla ut % för ILIKE . Resultatet är detsamma - förutom ord som innehåller specialtecken:%_\ för ILIKE och !$()*+.:<=>?[\]^{|}- för reguljära uttrycksmönster. Du kan behöva undkomma specialtecken åt båda hållen för att undvika överraskningar. Här är en funktion för reguljära uttryck:

  • Escape-funktion för reguljära uttryck eller LIKE-mönster

Men jag tvivlar på att det är allt du behöver. Se min kommentar. Jag misstänker att du behöver fulltextsökning med en matchande ordbok för ditt naturliga språk för att ge användbar ordavledning ...

Relaterat:

  • IN vs ALLA operatör i PostgreSQL
  • PostgreSQL LIKE frågeprestandavariationer
  • Mönstermatchning med LIKE, SIMILAR TO eller reguljära uttryck i PostgreSQL


  1. skapa parametriserade vyer i oracle11g

  2. Använda MariaDB Flashback på en MySQL-server

  3. Linq to Entities Group By (OUTTER APPLY) oracle 11.2.0.3.0 stöder inte applicera

  4. Hur kan jag importera en JSON-fil till PostgreSQL?