编写自定义oracle函数来删除chr(10)= linefeed& chr(13)=回车和修剪列并返回值

时间:2016-12-04 08:47:40

标签: plsql oracle10g

是否可以编写执行以下操作的自定义oracle函数

remove char(10)
remove char(13)
trim

所以,如果我写

从tab1中选择custom_function(col1),它返回带换行符,回车符和修剪符号的值

If possible i also want to replace a long balnk line between two words with single blank.

其中col1是字符串

有人可以帮助我吗

非常感谢

1 个答案:

答案 0 :(得分:1)

对于修剪问题,您可能只需要rtrim,例如:

select rtrim(somecolumn, chr(10)||chr(13)||' ')
from   ( select 'Some text

                ' as somecolumn
         from dual );

要替换多个空格字符,您可以使用regexp_replace,例如:

select regexp_replace(somecolumn, '\s{2,}', ' ')
from   ( select 'Some   text' as somecolumn
         from dual );

两者在一起:

select regexp_replace(rtrim(somecolumn, chr(10)||chr(13)||' '), '\s{2,}', ' ')
from   ( select 'Some   text

                ' as somecolumn
         from dual );