select
SUBSTR(s, 1, INSTR(s, '-') - 1) as a,
SUBSTR(s, INSTR(s, '-', -1) + 1) as b
from
(select 'example@sqldat.com@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
startund - (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)Argumentstartindexund 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