Как прокомментировано, SQL-запрос должен возвращать фиксированный набор столбцов, поэтому динамическая часть не может быть выполнена в чистом SQL.
Вот решение, которое использует REGEXP_SUBSTR()
дляразбить строку на фиксированное количество столбцов:
SELECT
file_name,
REGEXP_SUBSTR(file_name, '[^._]+', 1, 1) as part1,
REGEXP_SUBSTR(file_name, '[^._]+', 1, 2) as part2,
REGEXP_SUBSTR(file_name, '[^._]+', 1, 3) as part3
FROM table1
Вы можете добавить столько столбцов, сколько необходимо в наборе результатов.
Объяснение регулярного выражения:
[ # any character
^ # other than
. # a dot
_ # or an underscore
] #
+ # occuring at least once
Итакв основном это будет захватывать строковые части между разделителями .
и _
.