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)
Met behulp van SUBSTR(string, start, length) we hebben de volgende argumenten:
Voor A:
- de tekenreeks om te zoeken
- 1 als de
starten - (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)argumentstartindexen 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