Необходимо извлечь все числовые символы, то есть (0-9) из столбца varchar
.
Предположим, у нас есть данные типа abc 123 456k
, тогда на выходе должно быть '123456', то есть нечисловые символы, включая пробелы для фильтрации.
Я на Teradata версии 15.10.
Я использовал REGEXP_SUBSTR(ATRB_7_VAL, '[0-9]+')
и REGEXP_REPLACE(ATRB_7_VAL,'[^0-9 ]*','')
, но оба не дают желаемого результата.
create multiset volatile table abc
(
ATRB_7_VAL varchar(100)
)
on commit preserve rows;
insert into abc (
'abc 123 456 xyzabck'
);
insert into abc (
'123456 789k'
);
insert into abc (
'123456 789k 678-123*'
);
select ATRB_7_VAL
,REGEXP_SUBSTR(ATRB_7_VAL, '[0-9]+') as val1
,REGEXP_REPLACE(ATRB_7_VAL,'[^0-9 ]*','') as val2
from abc;
ожидаемый результат
123456
123456789
123456789678123
Фактический результат с REGEXP_SUBSTR(ATRB_7_VAL, '[0-9]+')
val1
123
123456
123456
фактический результат с REGEXP_REPLACE(ATRB_7_VAL,'[^0-9 ]*','')
val2
123 456 xyzabck
123456 789k
123456 789k 678-123*