Один из способов - заменить значение:
replace(case when substr(file_name, length(file_name) - 44 , 1) like '%_'
then substr(file_name, length(file_name) - 44 , 9)
else substr(file_name, length(file_name) - 45 , 9) END
end, '_', '')
Однако, я думаю, regexp_extract()
может быть проще:
regexp_extract(file_name, '^.{44}_?([0-9]{8})', '1')
Шаблон может быть проще, если есть только одна последовательность из 8 цифр, окруженных подчеркиванием:
regexp_extract(file_name, '_([0-9]{8})_', '1')