Полагаю, вы ищете что-то подобное.Обратите внимание, этот пример возвращает все поля для примера, но, конечно, вы можете просто выбрать field3, если это все, что вам нужно.CTE создает строку с полями, разделенными табуляцией.Затем запрос использует regex_substr для получения n-й (4-й аргумент) строки символов, за которой следует TAB или конец строки.
with tab_delimited_record(record_with_fields) as (
select 'Field1'||chr(09)||'Field2'||chr(09)||'This is field3 and contains spaces'||chr(09)||'Field4' from dual
)
select record_with_fields,
regexp_substr(record_with_fields, '(.*?)('||chr(09)||'|$)', 1, 1, null, 1) as field_1,
regexp_substr(record_with_fields, '(.*?)('||chr(09)||'|$)', 1, 2, null, 1) as field_2,
regexp_substr(record_with_fields, '(.*?)('||chr(09)||'|$)', 1, 3, null, 1) as field_3,
regexp_substr(record_with_fields, '(.*?)('||chr(09)||'|$)', 1, 4, null, 1) as field_4
from tab_delimited_record;