select
SUBSTR(s, 1, INSTR(s, '-') - 1) as a,
SUBSTR(s, INSTR(s, '-', -1) + 1) as b
from
(select '[email protected]@BR12340000-990' as s from dual)
Mit SUBSTR(string, start, length)
wir haben die folgenden Argumente:
Für A:
- die zu suchende Zeichenfolge
- 1 als
start
und - (index_of_the_first_hyphen - 1) als
length
.INSTR(string, searchfor)
gibt uns den Index des ersten Bindestrichs
Für B:
Mit SUBSTR(string, start)
wir haben Argumente:
- die zu suchende Zeichenfolge
- the (index_of_last_hyphen + 1) - diesmal verwenden wir den zusätzlichen
INSTR(string, searchfor, startindex)
Argumentstartindex
und setze es auf -1; Dadurch wird vom Ende der Zeichenfolge an gesucht und rückwärts gearbeitet, wodurch wir den Index des letzten Bindestrichs erhalten
Wir brauchen kein Längenargument - SUBSTR ohne Länge gibt den Rest des Strings bis zum Ende zurück
Es ist wichtig zu beachten, dass INSTR mit einem Startindex von -1 rückwärts sucht, aber immer den Index vom Anfang der Zeichenfolge zurückgibt, nicht vom Ende.
INSTR('dddde', 'd', -1)
12345 -- returns 4, because d is 4 from the start
54321 -- it does not return 2, even though d is 2 from the "start" when searching backwards