Вашият прост случай може да бъде решен с проста заявка с помощта на ANY конструкция и ~* :
SELECT *
FROM tbl
WHERE col ~* ANY (string_to_array('The ships hung in the sky ... bricks don’t', ' '));
~* е оператор за съвпадение на регулярен израз без значение за малките букви. Използвам това вместо ILIKE така че можем да използваме оригинални думи във вашия низ, без да е необходимо да добавяме % за ILIKE . Резултатът е същият - с изключение на думите, съдържащи специални знаци:%_\ за ILIKE и !$()*+.:<=>?[\]^{|}- за модели на регулярни изрази. Може да се наложи да избягвате специални символи по един или друг начин, за да избегнете изненади. Ето функция за регулярни изрази:
- Escape функция за регулярен израз или LIKE шаблони
Но имам мъчителни съмнения, че това ще е всичко, от което се нуждаете. Вижте моя коментар. Подозирам, че се нуждаете от пълнотекстово търсене със съвпадащ речник за вашия естествен език, за да предоставите полезна основа на думи...
Свързано:
- IN срещу ANY оператор в PostgreSQL
- Варианти на ефективността на заявката като PostgreSQL LIKE
- Съвпадение на образец с LIKE, SIMILAR TO или регулярни изрази в PostgreSQL