【问题标题】:Oracle: Find control characters except line feedOracle:查找除换行符以外的控制字符
【发布时间】:2016-06-21 20:45:41
【问题描述】:

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

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

有什么想法吗? 谢谢!

【问题讨论】:

    标签: oracle linefeed control-characters regexp-like


    【解决方案1】:

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

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

    【讨论】:

    • 这实际上与上面的查询做同样的事情,只有当有控制字符并且没​​有换行符的实例时才会返回结果。我需要的是找到所有控制字符的结果,换行符除外。
    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 2013-02-26
    • 2020-11-24
    • 2019-04-08
    • 2015-05-06
    相关资源
    最近更新 更多