2013-03-04 208 views
2

我要從破折號( - )前後的字符串中提取字符。到目前爲止,我能夠使用此代碼下面劃線之前,所有的數字返回:刪除破折號前的字符

SELECT 
INSTR('100-7', '-'), 
SUBSTR('100-7', 1, INSTR('100-7', '-')-1) 
FROM dual; 

現在我試圖找到一種方法破折號後的所有字符返回。所以如果我有一個字符串:

20-150 

查詢應該只返回我150.有反正我可以做到這一點嗎?順便說一句,我正在使用Oracle。謝謝你們:)

回答

6

這將破折號後恢復一切

SELECT SUBSTR(value, INSTR(value, '-')+1) invalue 
    FROM (SELECT '20-150' value FROM dual) t; 

輸出:

| INVALUE | 
----------- 
|  150 | 

sqlfiddle

,並把兩者一起

SELECT SUBSTR(value, 1, INSTR(value, '-') - 1) lvalue, 
     SUBSTR(value, INSTR(value, '-') + 1) rvalue 
    FROM (SELECT '20-150' value FROM dual) t; 

出放:

| LVALUE | RVALUE | 
------------------- 
|  20 | 150 | 

sqlfiddle

+0

你好彼得,我欠你一個啤酒。感謝您的幫助。你的代碼效果很好。 – GianIsTheName 2013-03-04 07:08:15

1

使用REGEXP_REPLACE

SELECT REGEXP_REPLACE('20-150','(.*)-','') 
FROM dual; 
-1

使用REGEXP_SUBSTR:

SELECT REGEXP_SUBSTR ('20-15055555555', '[^-]+', 1, 2) rep 
    FROM DUAL; 

你可以試試這個