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