Oracle选择NCLOB类似于字符串的位置

Oracle选择NCLOB类似于字符串的位置,oracle,select,nclob,Oracle,Select,Nclob,我有一个Oracle表,在这个表中有一列类型为NCLOB。我想对其执行选择like,如下所示: SELECT * FROM T_WEB_TASK_IT WHERE DBMS_LOB.substr( T_WEB_TASK_IT.ISSUE_DESCRIPTION , 32000, 1) LIKE '%Turning on the%' 但它不起作用,我得到一个错误,说: 字符串缓冲区太小 但我不明白这是怎么回事,因为我知道一个事实,那一列中没有那么多字符用于那个特定的记录 您可以使用DBMS\u

我有一个Oracle表,在这个表中有一列类型为
NCLOB
。我想对其执行
选择like
,如下所示:

SELECT
*
FROM
T_WEB_TASK_IT
WHERE DBMS_LOB.substr( T_WEB_TASK_IT.ISSUE_DESCRIPTION , 32000, 1)
LIKE '%Turning on the%'
但它不起作用,我得到一个错误,说:

字符串缓冲区太小


但我不明白这是怎么回事,因为我知道一个事实,那一列中没有那么多字符用于那个特定的记录

您可以使用
DBMS\u 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')

这不起作用,我得到一个无效的关系运算符错误:/对不起,我忘记添加
>0
。dbms_lob.instr是一个函数,因此必须比较结果。它应该可以工作。如果您没有得到结果,那么可能没有包含该句子的行。