0

我有一列“A”,其中包含例如数字 - 0001、0002、0003

同一列“A”在某些行中还包含一些字母和特殊字符,例如 - connn、cco*jjj、hhhhhh11111 等。

我想用空白值替换这些字母和特殊字符行,并且只想保留包含数字的行。

我可以在这里使用哪个正则表达式?

4

2 回答 2

0

我了解您想设置为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]'
于 2020-09-23T14:08:22.973 回答
0

如果您想从这些值中提取数字(即使它们以非数字结尾或开头),您可以使用以下内容:

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 |
+------+
于 2020-09-23T14:56:45.640 回答