代码之家  ›  专栏  ›  技术社区  ›  androboy

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

  •  2
  • androboy  · 技术社区  · 11 年前

    我尝试使用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/decimal或任何数字数据类型时 Invalid input syntax for type numeric Invalid digit, Value '2', Pos 0, Type: Long 等等

    我错过了什么吗?REGEXP_SUBSTR串联的典型输出为1056220044022等。在Redshift数据仓库上运行的查询和REGEXP_REPLACE/TRANSLATE尚未出现。

    1 回复  |  直到 11 年前
        1
  •  2
  •   androboy    11 年前

    看起来,每当字符串中没有数字时,上述regexp_substr的串联就会返回空字符串(“”),不支持将其转换为整数。所以我用了 NULLIF (regex expression, '')