试图在 CLOB 字段中查找垂直制表符。使用不支持十六进制字符输入的 regexp_like。所以这是无效的,并且 REGEXP_LIKE(,'[\xB]','i') Posix 条目似乎没有帮助,因为 :cntl: 包括在我的场景中有效的回车/换行等项目。
问问题
927 次
2 回答
0
在 Oracle 中有两种指定非打印字符的标准方法 -chr()
用于 8 位代码页和unistr()
UTF-16。这是一个显示它们的示例(垂直选项卡对于 8 位是十进制 11,对于 UTF-16 是 \000B)。
with test as (select to_clob(unistr('\000B')) as str from dual)
select 'Found' from test
where regexp_like(str, chr(11),'i'); -- case insensitivity doesn't matter unless you're using letters
于 2019-07-03T14:59:00.960 回答
0
您还可以考虑asciistr()
在内部使用函数
regexp_like(clob_, asciistr(chr(to_number('0B','xx'))))
检测列中是否存在至少一个vertical tab character
(十进制:11
,十六进制:0B
字符^K
:)clob_
select id
from tab
where regexp_like(clob_, asciistr(chr(to_number('0B','xx'))))
于 2019-07-03T16:48:21.867 回答