2016-07-22 63 views
0

我已經使用了MySQL,並且已經使用了新的oracle。在MySQL中,我們有一個功能SUBSTRING_INDEX(),我想取代它在Oracle中,任何幫助PLZ如何分割oracle中的值

SQL>select SUBSTRING_INDEX('JD;EQ;0001', ';', -1) from dual; 

結果:

我想在Oracle中的相同的結果。 oracle中是否有任何函數在oracle中返回相同的結果?

我已經嘗試過但沒有預期的結果。

SELECT substr('CLUBORACLE',3,2) RES FROM dual; 
+0

我想你會發現這是一個有用的資源:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions001.htm –

回答

2
SELECT SUBSTR('JD;EQ;0001', INSTR('JD;EQ;0001', ';', -1) + 1) FROM dual 

在上面的查詢,INSTR('JD;EQ;0001', ';', -1)將返回6,這是在表達最後分號的位置。你想從後面的之後的最後一個分號處取出子串,直到字符串結束。

請看here,瞭解關於Oracle的INSTR的SO問題。

+0

@JohnAshley感謝您的編輯 –

0

你也可以使用正則表達式:SELECT REGEXP_SUBSTR('JD;EQ;0001', '[^;]+', 1, your_occurance_number) FROM dual;但是SUBSTR + INSTR應該更快。