1

试图在 CLOB 字段中查找垂直制表符。使用不支持十六进制字符输入的 regexp_like。所以这是无效的,并且 REGEXP_LIKE(,'[\xB]','i') Posix 条目似乎没有帮助,因为 :cntl: 包括在我的场景中有效的回车/换行等项目。

4

2 回答 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'))))

Demo

于 2019-07-03T16:48:21.867 回答