2015-11-10 20 views
0

我試圖使用regexp_replace用表達式('數字')(在數字前後添加)替換每個出現的類型(數字)(括號中的數字) - 將數字轉換爲varchar)。使用regexp_replace將數字轉換爲字符串

實施例 -

變化前:ABCDE(737)sbsgs37(6)S(v)的

更改後:ABCDE( '737')sbsgs37( '6')S(v)的

謝謝,

伊利亞Golosovsky。

+1

樣本數據和預期的結果將真正幫助解釋你正在嘗試做的。 –

+0

輸入數據是一個包含字母字符,標點符號和數字的'VARCHAR2' - 如何在「VARCHAR2」類型中將數字包裝在引號中如何將字符串的部分奇蹟般地更改爲「NUMBER」類型,以便將它們用引號括起來有什麼區別? – MT0

回答

2

,因爲他剛剛錯過了一個小東西可以使用這個

regexp_replace('abcde(737)sbsgs37(6)s(v)', '\((\d+)\)', '(''\1'')) 

-> abcde('737')sbsgs37('6')s(v) 

DEMO

+0

嗨,謝謝你的回答,但這並不適合我的情況。你的目標是任何數字,我只需要括號內的數字。 – golosovsky

+0

我改變了它(使用比@pablomatico更少的括號) –

1

所有信貸Wernfried Domscheit。您可以使用此一:

regexp_replace('abcde(737)sbsgs37(6)s(v)', '(\()(\d+)(\))', '\1''\2''\3') 

測試和工作:

select regexp_replace('abcde(737)sbsgs37(6)s(v)', '(\()(\d+)(\))', '\1''\2''\3') from dual 
+2

因爲你已經捕獲了parens,所以你可以在輸出中使用它們而不是硬編碼更多:'select regexp_replace('abcde(737)sbsgs37(6)s(v )','(\()(\ d +)(\))','\ 1''\ 2''\ 3')from dual;'。 –

+0

謝謝@Gary_W!你說得對,我只是編輯了答案。 – pablomatico