Получить из ФИО Фамилию и инициалы имени и отчества

Есть таблица man с полем text. Поле содержит ФИО полностью. Как можно получить фамилию и инициалы имени и отчества?

Например вместо Иванов Сергей Михайлович получить Иванов С.М.


Ответы (1 шт):

Автор решения: Akalit

Реализация в Oracle

with man as (
select 'Иванов Петр Васильевич' as text from dual union all
select 'Борисов Богдан Егорович' as text from dual union all
select 'Жуков Никита Тимофеевич' as text from dual)

select man.text,
regexp_replace(man.text, ' (.*)',' ',2,1) || 
regexp_replace(regexp_replace(man.text, ' (.*)|^[^ ]* '),'.*','.',2,1)||
regexp_replace(regexp_replace(man.text, '(.*) '),'.*','.',2,1) INITIALS
from man;
--------------------------------------------------------------------
TEXT                            INITIALS
Иванов Петр Васильевич          Иванов П.В.
Борисов Богдан Егорович         Борисов Б.Е.
Жуков Никита Тимофеевич         Жуков Н.Т.
→ Ссылка