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)
Usando SUBSTR(string, start, length)
abbiamo i seguenti argomenti:
Per A:
- la stringa da cercare
- 1 come
start
e - (index_of_the_first_hyphen - 1) come
length
.INSTR(string, searchfor)
ci dà l'indice del primo trattino
Per B:
Usando SUBSTR(string, start)
abbiamo argomenti:
- la stringa da cercare
- the (index_of_last_hyphen + 1) - questa volta usiamo l'extra
INSTR(string, searchfor, startindex)
argomentostartindex
e impostalo su -1; questo fa cercare dalla fine della stringa e lavorare all'indietro, dandoci l'indice dell'ultimo trattino
Non abbiamo bisogno di un argomento di lunghezza - SUBSTR senza lunghezza restituisce il resto della stringa alla fine
È importante notare che INSTR con un indice iniziale di -1 esegue la ricerca all'indietro ma restituisce sempre l'indice dall'inizio della stringa, non dalla fine.
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