Непонятно, что на самом деле означает «у которого есть и слова« великий и добрый »».
Если вы хотите проверить, есть ли в строке оба шаблона слов, то это просто, как
where lower(col) like '%good%' AND lower(col) like '%great%'
Если вы имеете в виду, что они должны содержать истинные и хорошие слова, то для более простых случаев следует выполнить что-то вроде
where ' ' || lower(col) || ' ' LIKE '% good %' AND ' ' || lower(col) || ' ' LIKE '% great %'
Однако это не будет соответствовать предложению, заканчивающемуся словом и имеющемуполная остановка.Он становится длинным, если вы просто хотите использовать LIKE
для обработки таких сценариев.
REGEXP
функции дают большую гибкость, но могут быть менее производительными.
WHERE REGEXP_LIKE ( s, '(^|\W)good(\W|$|\.)') AND REGEXP_LIKE ( s, '(^|\W)great(\W|$|\.)')
Это ищет словограницы, то есть слово, окруженное несловесными символами, а также начало и конец, включая конечную точку.Если вы хотите игнорировать регистр, добавьте к нему ,'i'
в качестве третьего аргумента.