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)
Met behulp van SUBSTR(string, start, length)
we hebben de volgende argumenten:
Voor A:
- de tekenreeks om te zoeken
- 1 als de
start
en - (index_of_the_first_hyphen - 1) als de
length
.INSTR(string, searchfor)
geeft ons de index van het eerste koppelteken
Voor B:
Met behulp van SUBSTR(string, start)
we hebben argumenten:
- de tekenreeks om te zoeken
- de (index_of_last_hyphen + 1) - deze keer gebruiken we de extra
INSTR(string, searchfor, startindex)
argumentstartindex
en stel het in op -1; dit zorgt ervoor dat het vanaf het einde van de string zoekt en achteruit werkt, waardoor we de index van het laatste koppelteken krijgen
We hebben geen lengteargument nodig - SUBSTR zonder lengte retourneert de rest van de string naar het einde
Het is belangrijk op te merken dat INSTR met een startindex van -1 achteruit zoekt, maar altijd de index vanaf het begin van de tekenreeks retourneert, niet het einde.
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