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)
Menggunakan SUBSTR(string, start, length)
kami memiliki argumen berikut:
Untuk A:
- string yang akan dicari
- 1 sebagai
start
dan - (index_of_the_first_hyphen - 1) sebagai
length
.INSTR(string, searchfor)
memberi kita indeks tanda hubung pertama
Untuk B:
Menggunakan SUBSTR(string, start)
kami memiliki argumen:
- string yang akan dicari
- the (index_of_last_hyphen + 1) - kali ini kita menggunakan
INSTR(string, searchfor, startindex)
tambahan argumenstartindex
dan atur ke -1; ini membuatnya mencari dari akhir string dan bekerja mundur, memberi kita indeks tanda hubung terakhir
Kami tidak memerlukan argumen panjang - SUBSTR tanpa panjang mengembalikan sisa string ke akhir
Penting untuk dicatat bahwa INSTR dengan indeks awal -1 melakukan pencarian mundur tetapi selalu mengembalikan indeks dari awal string, bukan akhir.
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