如何在oracle中拆分值

时间:2016-07-22 09:18:25

标签: sql oracle

我曾经使用MySQL和oracle的新手。在MySQL中我们有一个函数SUBSTRING_INDEX(),我想在oracle中替换它,任何帮助plz

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

结果:

0001

我想在oracle中获得相同的结果。 oracle中是否有任何函数在oracle中返回相同的结果?

我试过但没有预期的结果。

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

2 个答案:

答案 0 :(得分:2)

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

在上面的查询中,INSTR('JD;EQ;0001', ';', -1)会返回6,这是表达式中 last 分号的位置。你想从最后一个分号之后的位置获取子串,直到字符串结束。

查看here有关Oracle INSTR的好问题。

答案 1 :(得分:0)

你也可以使用正则表达式:SELECT REGEXP_SUBSTR('JD;EQ;0001', '[^;]+', 1, your_occurance_number) FROM dual;但SUBSTR + INSTR应该更快。