Oracle选择NCLOB所在的位置类似于某个字符串



我有一个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')

最新更新