我有一个Oracle表,在这个表中我有一列类型为NCLOB
。我想对它执行SELECT LIKE
,如下所示:
SELECT
*
FROM
T_WEB_TASK_IT
WHERE DBMS_LOB.substr( T_WEB_TASK_IT.ISSUE_DESCRIPTION , 32000, 1)
LIKE '%Turning on the%'
但它不起作用,我得到一个错误说:
字符串缓冲区太小
但我不明白这怎么可能,因为我知道一个事实,那就是那个特定记录的栏里没有那么多字符!
您可以使用DBMS_LOB.INSTR
函数在lob中搜索字符串。像这样:
SELECT *
FROM T_WEB_TASK_IT
WHERE DBMS_LOB.INSTR( T_WEB_TASK_IT.ISSUE_DESCRIPTION , 'Turning on the') > 0
除了DBMS_LOB.INSTR,您还可以使用正则表达式:
SELECT *
FROM T_WEB_TASK_IT
WHERE regexp_like(issue_description, 'Turning on the')