2015-05-06 13 views
-1

我的表中有一列信息消除在單列多個分隔符在Oracle

Info 

+ aname + + + + + + +肛+ + + + + + + + + + agender + + + + + + + + + + + + +阿拉斯

我應該得到的輸出喜歡

aname+ano+agender+arace 

我有消除多個分隔符和單+ 我REGEXP_REPLACE嘗試更換和修剪和WOR王如下

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

我得到輸出 aname +++++++肛+++++++ agender ++++++++++阿拉斯

+2

你試過了什麼?爲什麼它不工作? –

+3

但是,爲什麼你要存儲這樣的數據?這是你的主要問題... – jarlh

回答

4

這個規則表達式不訣竅:'\ ++'

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

爲了擺脫領先+(如你的例子),使用ltrim(或修剪也刪除尾隨+)。

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

與修剪作爲單獨的解決方案非常好的答案 – Kyborek

+0

非常感謝您的解決方案,它的工作 – ramya

+0

嗨解決方案的工作,謝謝..但是我嘗試與空間之間加'和取代我做'\ + +,'+'它消除了所有空格,並取代'+',我不想多個+那裏,並且如果我把查詢寫成'+ aname +++(在換行符)+ ano +++++ (再次在新行)+ agender'輸出顯示爲aname ++ ano ++ agender。我可以知道爲什麼 – ramya