我曾经使用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;
答案 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应该更快。