2013-12-06 2 views
0

У меня есть таблица Oracle, и в этой таблице у меня есть столбец типа NCLOB. Я хотел бы выполнить SELECT LIKE на него так:Oracle Выберите, где NCLOB как некоторая строка

SELECT 
* 
FROM 
T_WEB_TASK_IT 
WHERE DBMS_LOB.substr(T_WEB_TASK_IT.ISSUE_DESCRIPTION , 32000, 1) 
LIKE '%Turning on the%' 

Но это не работает, я получаю сообщение об ошибке сказав:

строковый буфер слишком мал

Но я не понимаю, как это может быть, потому что я знаю, что в этой колонке для этой конкретной записи не так много символов!

Любая помощь будет принята с благодарностью.

Спасибо.

ответ

0

Вы можете использовать функцию DBMS_LOB.INSTR для поиска строк в лоб. Как это:

SELECT * 
FROM T_WEB_TASK_IT 
WHERE DBMS_LOB.INSTR(T_WEB_TASK_IT.ISSUE_DESCRIPTION , 'Turning on the') > 0 
+0

Это не работает, я получаю недопустимый реляционную ошибку оператора:/ – Ciwan

+0

К сожалению, я забыл добавить '> 0'. dbms_lob.instr - это функция, поэтому вы должны сравнить результат. –

+0

Теперь он работает, спасибо :) – Ciwan

0

Помимо DBMS_LOB.INSTR, вы также можете использовать регулярные выражения:

SELECT * 
FROM T_WEB_TASK_IT 
WHERE regexp_like(issue_description, 'Turning on the') 
Смежные вопросы