【发布时间】:2018-03-07 06:04:06
【问题描述】:
我的表格中有一些条目包含非打印字符。我尝试编写一个简单的脚本在 Oracle DB 上执行 -
select column from table where regexp_like(column,'([[:cntrl:]]+)');
但这甚至可以匹配带有多个空格的字符串。但是空格是可以的。
什么是最好的查询?
【问题讨论】:
标签: sql oracle regexp-like
我的表格中有一些条目包含非打印字符。我尝试编写一个简单的脚本在 Oracle DB 上执行 -
select column from table where regexp_like(column,'([[:cntrl:]]+)');
但这甚至可以匹配带有多个空格的字符串。但是空格是可以的。
什么是最好的查询?
【问题讨论】:
标签: sql oracle regexp-like
尝试使用 UNISTR 和适当的十六进制范围,对应于您希望覆盖的 ASCII 范围:
SELECT column
FROM table
WHERE NOT REGEXP_LIKE('a', '[' || unistr('\0021') || '-' || unistr('\007A') || ']')
这是我能做的最好的工作。字符范围从 ASCII 字符 33 到 122。您可以使用此范围的否定来定位您想要的字符。
【讨论】:
这个呢:
select column
from table
where NOT regexp_like(column,'[ -~]');
【讨论】: