искать наличие двух строк в базе данных оракула в столбце clob? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть столбец clob с длинной строкой.

как "отличная работа сделана сегодня. Хорошо"

Я хочу получить все записи, в которых есть как слова "отлично", так и "хорошо".

обе позиции не зафиксированы.

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Я думаю, что это базовая логика, которую вы хотите:

where lower(col) like '%good%' and lower(col) like '%great%'

В сабах вы не можете использовать like:

where dbms_lob.instr(col, 'good') and dbms_log.instr(col, 'great')
0 голосов
/ 25 октября 2018

Попробуйте и дайте мне знать, если это работает для вас.

SELECT *
FROM clob_table
WHERE DBMS_LOB.INSTR(clob_text,'great')>0 
      AND DBMS_LOB.INSTR(clob_text,'good')>0;

Не забудьте указать имена вашей таблицы и столбцов.

Вот мои результаты, enter image description here

select * from clob_table;

image0 AND DBMS_LOB.INSTR(clob_text,'good')>0;">

0 голосов
/ 25 октября 2018

Непонятно, что на самом деле означает «у которого есть и слова« великий и добрый »».

Если вы хотите проверить, есть ли в строке оба шаблона слов, то это просто, как

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' в качестве третьего аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...