Извлекать только числа 0-9 из строки

Необходимо извлечь все числовые символы, например (0–9), из столбца varchar. предположим, что у нас есть такие данные, как abc 123 456k, тогда вывод должен быть «123456», то есть нечисловые символы, включая пробелы, которые необходимо отфильтровать. У меня Терадата версии 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*

Когда вы запускаете REGEXP_REPLACE('abc 123 456k', '[^0-9 ]*', ''), что выдает?

Tim Biegeleisen 08.05.2019 13:13

мы получаем числа, но пробелы все еще там. 123456 789 678123 123 456 123456 789

Abhishek Kumar Singh 08.05.2019 13:53
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
2 087
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте заменить шаблон [^0-9]* пустой строкой:

SELECT REGEXP_REPLACE('abc 123 456k', '[^0-9]*', '')

Это должно удалить любой нецифровой символ, пробел включая.

Другие вопросы по теме