Oracle:查找除换行之外的控制字符

时间:2016-06-21 20:45:41

标签: oracle linefeed control-characters regexp-like

我正在尝试列中包含任何控制包的所有行,但换行符(A的十六进制值)除外。我尝试过以下操作,但这只返回具有控制字符且没有换行符的结果。我真的想要一组控制字符的字符,而不是换行字符。字符集是否有“减号”操作,您可以从中排除特定字符集?

SELECT *
FROM MyTable
WHERE REGEXP_LIKE(MyColumn, '[:cntrl: &&[^' || UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('A')) || ']]{1,}');

有什么想法? 谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,这是第一次尝试,但我确信这可以更加优雅和高效:

SELECT *
FROM MyTable
WHERE regexp_like(MyColumn, '[[:cntrl:]]')
AND MyColumn NOT like '%' || chr(10) || '%';