SUBSTR + INSTR
, вероятно, будет работать быстрее (т.е. нет необходимости в регулярных выражениях).result
показывает, что, в то время как result_2
показывает одну опцию регулярного выражения.
SQL> with test (col) as
2 (select '1241 - ASGEF - AFZHE' from dual union all
3 select '1242 - ASGEF1' from dual union all
4 select '1243 - UJHAHAHG - AGHBNG' from dual
5 )
6 select col,
7 trim(substr(col, instr(col, '-') + 1)) result,
8 ltrim(regexp_substr(col, '-.+'), '- ') result_2
9 from test;
COL RESULT RESULT_2
------------------------ ------------------------ ------------------------
1241 - ASGEF - AFZHE ASGEF - AFZHE ASGEF - AFZHE
1242 - ASGEF1 ASGEF1 ASGEF1
1243 - UJHAHAHG - AGHBNG UJHAHAHG - AGHBNG UJHAHAHG - AGHBNG
SQL>