Как разбить столбец на основе определенных критериев - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу разделить столбец, используя SQL базы данных HANA, как показано ниже:

По существу, столбец имеет значение 1000, 100 или 100 в строке после 4 значений

Дляпример:

ABCD1000XYZ
ABCD100XYZ
ABCD10XYZ

Мне нужно разбить столбец на

ABCD 1000 XYZ
ABCD 100 XYZ
ABCD 10 XYZ 

enter image description here

1 Ответ

0 голосов
/ 18 декабря 2018

Регулярное выражение, используемое для идентификации различных групп, выглядит так:

(^.{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.

...