You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 11g中如何用REGEXP_LIKE查找回车、换行和制表符?

在Oracle 11g中查找含回车、换行或制表符的行

问题原因分析

你之前的两种写法都存在问题:

  • 第一种用'[\r\n\t]':Oracle的REGEXP_LIKE不支持这类转义序列,\r、\n、\t会被当成普通字符(比如\r会被解析为反斜杠加字母r,而非回车符),自然匹配不到目标行。
  • 第二种用'[chr(10)|chr(13)]':这里的chr(10)是字符串的一部分,不是函数调用,Oracle会尝试匹配字符串chr(10)里的单个字符,而不是换行符,所以结果不符合预期。

正确解法

方法1:使用正则表达式(REGEXP_LIKE)

需要把CHR()函数的结果拼接进正则表达式的字符类中,让Oracle识别这些特殊字符:

SELECT c1 FROM table_name
WHERE REGEXP_LIKE(c1, '[' || CHR(10) || CHR(13) || CHR(9) || ']');

其中:

  • CHR(10):代表换行符
  • CHR(13):代表回车符
  • CHR(9):代表制表符

方法2:使用INSTR函数(性能更优)

如果不需要正则的复杂匹配,用INSTR直接检查字符存在性会更高效:

SELECT c1 FROM table_name
WHERE INSTR(c1, CHR(10)) > 0
   OR INSTR(c1, CHR(13)) > 0
   OR INSTR(c1, CHR(9)) > 0;

INSTR返回目标字符在字符串中的位置,返回值大于0说明该字符存在。

内容的提问来源于stack exchange,提问作者rodneyc8063

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:31:00