I have two columns A, B in oracle where A value has values like that xx-target-xx xx any data but target is exists
A -------- xx-target-xx xx-target
i neet to return only ‘target’ from text i tired this
select TRIM(substr(A, 0, instr(A, '-') - 1)) from mytable
but the result returns xx
not target
Advertisement
Answer
Use REGEXP_SUBSTR
. You want the second string of any characters except the minus sign:
select a, regexp_substr(a, '[^-]+', 1, 2) from mytable;
Using INSTR
and SUBSTR
instead is a tad more complicated, but possible of course:
select a, substr(a, instr(a, '-') + 1, instr(a || '-', '-', 1, 2) - instr(a, '-') - 1 ) as value from mytable;
Demo: https://dbfiddle.uk/?rdbms=oracle_18&fiddle=e75b878bbd6300e9207cd698bb3029ec