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

PostgreSQL Omvendt LIKE

Din simple sag kan løses med en simpel forespørgsel ved hjælp af ANY konstruktion og ~* :

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

~* er den store og små bogstaver ufølsomme regulære udtryk matchoperator. Jeg bruger det i stedet for ILIKE så vi kan bruge originale ord i din streng uden at skulle udfylde % for ILIKE . Resultatet er det samme - bortset fra ord, der indeholder specialtegn:%_\ for ILIKE og !$()*+.:<=>?[\]^{|}- for regulære udtryksmønstre. Du skal muligvis undslippe specialtegn på begge måder for at undgå overraskelser. Her er en funktion til regulære udtryk:

  • Escape-funktion til regulære udtryk eller LIKE-mønstre

Men jeg har nagende tvivl om, at det vil være alt, hvad du behøver. Se min kommentar. Jeg formoder, at du har brug for fuld tekstsøgning med en matchende ordbog til dit naturlige sprog for at give nyttige ordstammer ...

Relateret:

  • IN vs. ENHVER operatør i PostgreSQL
  • PostgreSQL LIKE forespørgselsydeevnevariationer
  • Mønstermatching med LIKE, SIMILAR TO eller regulære udtryk i PostgreSQL


  1. Hvordan udfører man en mysqldump uden en adgangskodeprompt?

  2. Problem ved sammenligning af resultatet af to_char(myDate, 'DAY') med en streng

  3. effektiv måde at implementere personsøgning på

  4. SQL Server Error 206:Operand type sammenstød