Oracle Regexp用空格替换\ n,\ r和\ t

时间:2013-05-06 20:56:02

标签: oracle plsql

我正在尝试从包含换行符(NL)字符的表中选择一列(可能还有其他\n\r\t)。我想使用REGEXP来选择数据并用空格替换(仅这三个)字符,“”。

2 个答案:

答案 0 :(得分:21)

不需要正则表达式。这可以使用ASCII代码和枯燥的旧TRANSLATE()

轻松完成
select translate(your_column, chr(10)||chr(11)||chr(13), '    ')
from your_table;

用空格替换换行符,制表符和回车符。


TRANSLATE()比其正则表达式更有效。但是,如果您的心脏设置在该方法上,您应该知道我们可以在正则表达式中引用ASCII代码。所以这个陈述是上面的正则表达式版本。

select regexp_replace(your_column,  '([\x0A|\x0B|`\x0D])', ' ')
from your_table;

调整是以十六进制而不是以10为基础引用ASCII码。

答案 1 :(得分:0)

select translate(your_column, chr(10)||chr(11)||chr(13), ' ') from your_table;

清洁时,必须将非null值用作参数... (一旦1个参数为空,oracle函数基本上将返回null,很少有诸如replace-functions之类的例外)

select translate(your_column, ' '||chr(10)||chr(11)||chr(13), ' ') from your_table;

此示例使用''->''转换作为伪值来防止参数3中的空值