Как заменить строки, содержащие буквы и специальные символы, пробелами в снежинке

У меня есть столбец A, который содержит числа, например, 0001, 0002, 0003

тот же столбец A также содержит некоторые алфавиты и специальные символы в некоторых строках, например, connn, cco * jjj, hhhhhh11111 и т. д.

Я хочу заменить эти строки алфавитов и специальных символов пустыми значениями и сохранить только строки, содержащие число.

какое выражение регулярного выражения я могу здесь использовать?


person Saurabh    schedule 23.09.2020    source источник


Ответы (2)


Если вы хотите извлечь числа из этих значений (даже если они заканчиваются или начинаются не цифрами), вы можете использовать что-то вроде этого:

create table testing ( A varchar ) as select *
from values ('123'),('aaa123'),('3343'),('aaaa');

select REGEXP_SUBSTR( A, '\\D*(\\d+)\\D*', 1, 1, 'e', 1 ) res 
from testing;

+------+
| RES  |
+------+
| 123  |
| 123  |
| 3343 |
| NULL |
+------+
person Gokhan Atil    schedule 23.09.2020

Я понимаю, что вы хотите установить null все значения, не содержащие только цифры.

Если это так, вы можете использовать try_to_decimal():

update mytable
set a = null
where a try_to_decimal(a) is null

Или совпадение регулярного выражения:

update mytable
set a = null
where a rlike '[^0-9]'
person GMB    schedule 23.09.2020