admin

REGEXP_SUBSTR转换后的输出未转换为整数

sql

我尝试使用如下所示的REGEXP_SUBSTR Sql函数从20个字符串中提取所有数字。

select
REGEXP_SUBSTR(substring(mycolumn,1,20), '^[0-9]', 1)
|| REGEXP_SUBSTR(substring(mycolumn,1,20), '^[0-9]', 2)
|| REGEXP_SUBSTR(substring(mycolumn,1,20), '^[0-9]', 3)
...
...
|| REGEXP_SUBSTR(substring(mycolumn,1,20), '^[0-9]', 20)
from tbl;

但是,当尝试将其转换为bigint /十进制或任何数字数据类型时,使用Invalid input syntax for typenumeric或失败Invalid digit, Value '2', Pos 0, Type: Long ,以此类推。

我错过了什么吗?REGEXP_SUBSTR串联的典型输出是105622,0044,022等。查询在Redshift数据仓库上运行,那里还不存在REGEXP_REPLACE
/ TRANSLATE。


阅读 169

收藏
2021-07-01

共1个答案

admin

看起来只要字符串中没有数字,上述regexp_substr的串联就会返回空字符串(’‘),该字符串不支持强制转换为整数。所以我用了NULLIF (regex expression, '')

2021-07-01