sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL Reverzní LIKE

Váš jednoduchý případ lze vyřešit jednoduchým dotazem pomocí ANY konstrukt a ~* :

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

~* je operátor shody regulárního výrazu bez ohledu na velikost písmen. Používám to místo ILIKE takže můžeme použít původní slova ve vašem řetězci, aniž bychom museli vyplňovat % pro ILIKE . Výsledek je stejný - kromě slov obsahujících speciální znaky:%_\ pro ILIKE a !$()*+.:<=>?[\]^{|}- pro vzory regulárních výrazů. Možná budete muset uniknout speciálním postavám v obou směrech, abyste se vyhnuli překvapení. Zde je funkce pro regulární výrazy:

  • Funkce Escape pro regulární výraz nebo vzory LIKE

Ale mám neodbytné pochybnosti, to bude vše, co budeš potřebovat. Viz můj komentář. Mám podezření, že potřebujete Fulltextové vyhledávání s odpovídajícím slovníkem pro váš přirozený jazyk, abyste poskytli užitečné odvození slov ...

Související:

  • IN vs. ANY operátor v PostgreSQL
  • Varianty výkonu dotazů PostgreSQL LIKE
  • Shoda vzoru s LIKE, SIMILAR TO nebo regulárními výrazy v PostgreSQL


  1. Date_trunc PostgreSQL v mySQL

  2. Funkce SUM() v PostgreSQL

  3. EM SQL Monitor dopad

  4. SQL COUNT() pro začátečníky