Twój prosty przypadek można rozwiązać za pomocą prostego zapytania za pomocą ANY
konstrukcja i ~*
:
SELECT *
FROM tbl
WHERE col ~* ANY (string_to_array('The ships hung in the sky ... bricks don’t', ' '));
~*
jest operatorem dopasowania wyrażenia regularnego bez uwzględniania wielkości liter. Używam tego zamiast ILIKE
dzięki czemu możemy użyć oryginalnych słów w Twoim ciągu bez konieczności dopełniania %
dla ILIKE
. Wynik jest taki sam - z wyjątkiem słów zawierających znaki specjalne:%_\
dla ILIKE
i !$()*+.:<=>?[\]^{|}-
dla wzorców wyrażeń regularnych. Być może będziesz musiał uciec przed postaciami specjalnymi, aby uniknąć niespodzianek. Oto funkcja dla wyrażeń regularnych:
- Funkcja wyjścia dla wyrażeń regularnych lub wzorców LIKE
Ale mam dokuczliwe wątpliwości, że to wszystko, czego potrzebujesz. Zobacz mój komentarz. Podejrzewam, że potrzebujesz wyszukiwania pełnotekstowego z dopasowanym słownikiem dla twojego języka naturalnego, aby zapewnić przydatne rdzenne słowa ...
Powiązane:
- IN kontra ANY operator w PostgreSQL
- Odmiany wydajności zapytań PostgreSQL LIKE
- Dopasowywanie wzorców za pomocą LIKE, SIMILAR TO lub wyrażeń regularnych w PostgreSQL