在oracle中消除单列中的多个分隔符

时间:2015-05-06 09:47:01

标签: sql oracle

我的表有单列信息

Info

+ aname + + + + + + + ano + + + + + + + + + + + agender + + + + + + + + + + + + + + arace

我应该得到像

这样的输出
aname+ano+agender+arace

我必须删除多个分隔符并替换为单个+ 我尝试使用regexp_replace并修剪并按下面的方式工作

    select trim(REGEXP_REPLACE('+aname + + + + + + +  
+ano + + + + + + + +   
+agender+ + + + + + + + + + +   
+arace', '\ + + ', '+'),'+') from dual; 

我输出为 aname +++++++ ANO +++++++ agender ++++++++++阿拉斯

1 个答案:

答案 0 :(得分:4)

这个正则表达式可以解决问题:'\ ++'

select REGEXP_REPLACE('+aname++++++ano+++++++++agender++++++++++++arace', '\++', '+') from dual;

要摆脱前导+(就像在你的例子中一样),使用ltrim(或修剪去除尾随+)。

select ltrim(REGEXP_REPLACE('+aname++++++ano+++++++++agender++++++++++++arace', '\++', '+'),'+') from dual;