2016-07-22 24 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应该更快。