Это должно быть возможно с regexp_replace
:
with names as (
select 'Jan Jones' name from dual union all
select 'Arne Barnie' name from dual
)
select
regexp_replace(name, '(.)[[:alpha:]]* *([[:alpha:]]*)', '\1. \2') name
from
names;
В качестве альтернативы, если вы предпочитаете запись \X
над записью [[:...:]]
, вы можете использовать
regexp_replace(name, '(.)\w* *(\w*)', '\1. \2')