1

我的表中有一些条目有非打印字符。我尝试编写一个简单的脚本在 Oracle DB 上执行-

select column from table where regexp_like(column,'([[:cntrl:]]+)');

但这甚至可以匹配带有多个空格的字符串。但是空格是可以的。

什么是最好的查询?

4

2 回答 2

0

尝试使用UNISTR适当的十六进制范围,对应于您希望覆盖的 ASCII 范围:

SELECT column
FROM table
WHERE NOT REGEXP_LIKE('a',  '[' || unistr('\0021') || '-' || unistr('\007A') || ']')

这是我能做的最好的事情。字符范围从 ASCII 字符 33 到 122。您可以使用此范围的否定来定位您想要的字符。

演示

于 2018-03-07T06:15:33.453 回答
0

那这个呢:

select column 
from table 
where NOT regexp_like(column,'[ -~]');
于 2018-03-07T07:58:55.740 回答