2016-07-22 9 views
0

teilen Ich habe mit MySQL und neu zu Orakel gearbeitet. In MySQL haben wir eine Funktion SUBSTRING_INDEX(), mag ich es in Oracle ersetzen, jeder Hilfe plzwie man den Wert in Orakel

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

Ergebnis:

ich ein gleiches Ergebnis in oracle will. Gibt es eine Funktion in Orakel, die das gleiche Ergebnis in Orakel zurückgibt?

Ich habe versucht, aber kein erwartetes Ergebnis.

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

Ich denke, dass Sie finden, dass dies eine nützliche Ressource ist: https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions001.htm –

Antwort

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

In der Abfrage oben INSTR('JD;EQ;0001', ';', -1) zurückkehren würde 6, die die Position der letzten Semikolon im Ausdruck ist. Sie möchten den Teilstring von der Position nach das letzte Semikolon bis zum Ende des Strings nehmen.

Look here für eine gute SO Frage über Oracles INSTR.

+0

@JohnAshley danke für die Bearbeitung –

0

Sie können auch Regex: SELECT REGEXP_SUBSTR('JD;EQ;0001', '[^;]+', 1, your_occurance_number) FROM dual; verwenden, aber SUBSTR + INSTR sollte schneller sein.