How do I get a substring from this example value:
john.abc_1234
I want it to return john.abc
.So basically we need to remove all the information after _
.
More examples: 1234_abc
You can use SUBSTR
and INSTR
:
select substr('john.abc_1234', 1, instr('john.abc_1234', '_') -1)
from dual
Warning: This is only guaranteed to work if your string actually has an underscore in it
Update
Additionally, if you are running from Oracle 10g on, you could take the Regex path, which would more powerfully handle exceptions.
Here are some links on how to do it in Oracle:
You can use via a simple combination of substr(..)
and instr(...)
to find the string which is free from underscore
special charecter. Also in order to only select _
containing strings you can make use of additional where
clause as below
select substr('john.abc_1234', 1,
instr('john.abc_1234', '_') -1)
from dual where
instr('john.abc_1234', '_')>0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With