2016-12-12 71 views
0

在我的數據庫中的其中一個表中,具有nvarchar(50)細節的列的值爲abc $ xyz。我想將此列中的$符號之後的所有內容提取到另一個表中。從Oracle數據庫中的varchar串中提取字符

+1

你到目前爲止嘗試過什麼(請在你的問題中包括代碼,而不是評論)? – Igor

+1

是否只有一個實例/發生'$'? – JohnHC

+0

是的,只有一個$的實例 –

回答

2

使用SUBSTR和INSTR

select substr(MyString,instr(MyString,'$')+1) as NewString -- Use +1 to exclude the '$' 
from MyTable 
+0

它工作。但是如果我必須從第二個最後一次出現的','怎麼辦? –

0

REGEXP_REPLACE也將工作:

SQL> SELECT regexp_replace('abc$xyz','.*\$') result FROM dual; 

RESULT 
------ 
xyz 

SQL> 
+0

在大多數情況下,regexp只能用於帶有instr和substr的簡單解決方案不存在。 – mathguy

+0

我個人討厭通過嵌套的SUBSTR/INSTR表達式進行涉水。我發現它們很難閱讀,並且更喜歡REGEXP函數。我瞭解可能會對性能產生影響。 – DCookie

+0

我同意,這就是爲什麼我說「當**簡單**解決方案不存在」。在這種情況下,instr和substr的解決方案非常簡單,很難看出它比regexp_replace解決方案更難讀取和維護。 – mathguy

0

如果已經使用正則表達式,我會REGEXP_SUBSTR去。

select regexp_substr('abc$xyz','[^$]*$') result from dual;