Możesz użyć SUBSTR
i INSTR
:
select substr('john.abc_1234', 1, instr('john.abc_1234', '_') -1)
from dual
Aktualizacja
Dodatkowo, jeśli korzystasz z Oracle 10g, możesz skorzystać ze ścieżki Regex, która lepiej obsłuży wyjątki.
Oto kilka linków, jak to zrobić w Oracle:
- http://psoug.org/reference/regexp.html
- http://psoug.org/snippet/Regular -Wyrażenia--Wyrażenie-Cheat-Sheet_856.htm
- http://www.regular-expressions.info/oracle.html