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)
Utilisation de SUBSTR(string, start, length)
nous avons les arguments suivants :
Pour A :
- la chaîne à rechercher
- 1 comme
start
et - (index_of_the_first_hyphen - 1) comme
length
.INSTR(string, searchfor)
nous donne l'indice du premier trait d'union
Pour B :
Utilisation de SUBSTR(string, start)
nous avons des arguments :
- la chaîne à rechercher
- le (index_of_last_hyphen + 1) - cette fois, nous utilisons le supplément
INSTR(string, searchfor, startindex)
argumentstartindex
et réglez-le sur -1 ; cela le fait rechercher à partir de la fin de la chaîne et travailler vers l'arrière, nous donnant l'index du dernier trait d'union
Nous n'avons pas besoin d'argument de longueur - SUBSTR sans longueur renvoie le reste de la chaîne jusqu'à la fin
Il est important de noter que INSTR avec un index de départ de -1 effectue une recherche vers l'arrière, mais il renvoie toujours l'index à partir du début de la chaîne, pas de la fin.
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