Регулярное выражение, используемое для идентификации различных групп, выглядит так:
(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)
, где каждая группа находится в пределах ()
Чтобы извлечь каждую группу из выбора, необходимо использовать этот регистрвыражение 4 раза (или 3, см. ниже) и выберите одну группу за раз (столбец)
SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 1)
Таким образом, запрос Sql будет
SELECT SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 1) AS Col1,
SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 2) AS Col2,
SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 3) AS Col3,
SUBSTRING_REGEXPR('(^.{4})(1[0]{1,})([A-Z0-9 ]*)(D.*$)' IN text_name GROUP 4) AS Col4
FROM some_table
Поскольку первый столбец всегда4 для символов его можно извлечь с помощью обычного вызова SUBSTRING
SELECT SUBSTRING(text, 1, 4) AS Col1, ...
Надеюсь, это поможет, у меня нет доступа к SAP Hana, поэтому Sql не проверен, хотя регулярное выражение проверено. Правка, я заметил, что у вас есть пробел в четвертом ряду, поэтому я добавил его в выражение reg.