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)
Pomocí SUBSTR(string, start, length)
máme následující argumenty:
Pro A:
- řetězec k vyhledávání
- 1 jako
start
a - (index_of_the_first_hyphen - 1) jako
length
.INSTR(string, searchfor)
nám dává index první pomlčky
Pro B:
Pomocí SUBSTR(string, start)
máme argumenty:
- řetězec k vyhledávání
- (index_of_last_hyphen + 1) – tentokrát použijeme navíc
INSTR(string, searchfor, startindex)
argumentstartindex
a nastavte ji na -1; to umožňuje vyhledávat od konce řetězce a pracovat zpět, což nám dává index poslední pomlčky
Nepotřebujeme argument délky – SUBSTR bez délky vrátí zbytek řetězce na konec
Je důležité si uvědomit, že INSTR s počátečním indexem -1 prohledává zpětně, ale vždy vrací index od začátku řetězce, nikoli od konce.
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