sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL Reverse LIKE

Uw eenvoudige geval kan worden opgelost met een eenvoudige vraag met behulp van de ANY constructie en ~* :

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

~* is de hoofdletterongevoelige overeenkomstoperator voor reguliere expressies. Ik gebruik dat in plaats van ILIKE zodat we originele woorden in je string kunnen gebruiken zonder dat we % . hoeven in te vullen voor ILIKE . Het resultaat is hetzelfde - behalve voor woorden met speciale tekens:%_\ voor ILIKE en !$()*+.:<=>?[\]^{|}- voor reguliere expressiepatronen. Mogelijk moet u op beide manieren aan speciale tekens ontsnappen om verrassingen te voorkomen. Hier is een functie voor reguliere expressies:

  • Escape-functie voor reguliere expressies of LIKE-patronen

Maar ik heb knagende twijfels dat zal alles wat je nodig hebt. Zie mijn opmerking. Ik vermoed dat je Full Text Search nodig hebt met een bijpassend woordenboek voor je natuurlijke taal om bruikbare woordstammen te vinden ...

Gerelateerd:

  • IN vs ELKE operator in PostgreSQL
  • PostgreSQL LIKE prestatievariaties voor query's
  • Patroon komt overeen met LIKE, VERGELIJKBAAR MET of reguliere expressies in PostgreSQL


  1. Kan Mysql een kolom splitsen?

  2. Tabel vastzetten in de Flash-cache

  3. SQL Server 2016:gegevens importeren

  4. Hoe voer ik een bulk in in mySQL met node.js