Oracle REGEXP_LIKE 找到垂直制表符 0xb 字符

Oracle REGEXP_LIKE find vertical tab 0xb character

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

在 Oracle 中有两种指定 non-printing 字符的标准方法 - chr() 用于 8 位代码页,unistr() 用于 UTF-16。这是一个显示它们的示例(8 位的垂直制表符是十进制 11,UTF-16 的制表符是 \000B)。

with test as (select to_clob(unistr('[=10=]0B')) 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

您也可以考虑在

中使用asciistr()函数

regexp_like(clob_, asciistr(chr(to_number('0B','xx'))))检测[=]中是否至少存在一个vertical tab character(十进制:11,十六进制:0B,字符:^K) 17=]列

select id
  from tab
 where regexp_like(clob_, asciistr(chr(to_number('0B','xx'))))

Demo