Одна возможность - regexp_replace()
:
select regexp_replace(str, ' [^ ]+$', '')
from (select 'abcd asdf 90909 ddd' as str from dual) x
Что удобно в regexp_replace()
, так это то, что вы можете более четко указать строки, которые хотите заменить:
select regexp_replace(str, ' (road|rd|street|ave)$', '')