Oracle. Получить часть строки между пробелами

В таблице Oracle есть столбец FIO, это строка с тремя словами типа 'Иванов Иван Иванович'. Мне нужно получить отдельно имя, фамилию и отчество. Фамилию достала так:

SELECT SUBSTR(FIO, 0, INSTR(FIO, ' ', 1) +0) 
FROM TABLE;

А вот с именем мучаюсь, не могу нигде найти ответ. Нужно получить просто "Иван". Пробовала аргументы крутить в разные стороны, делать подзапрос, но не срабатывает. Строк больше 20 млн, количество символов везде разное и непредсказуемое.

Вопрос кажется каким-то детсадовским, но я не соображу. Подскажите, как отвинтить часть строки между двумя пробелами, куда смотреть?


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

Автор решения: Akina
SELECT fio,
       REGEXP_SUBSTR(fio, '[^ ]+', 1, 1),
       REGEXP_SUBSTR(fio, '[^ ]+', 1, 2),
       REGEXP_SUBSTR(fio, '[^ ]+', 1, 3)
FROM src_table;
→ Ссылка