首页 > 解决方案 > 带有正则表达式的雪花

问题描述

尝试在 Snowflake 中运行以下 SQL:

SELECT fm_id ,
    CASE
      WHEN regexp_instr(ASSD,'...',1) > 0
      THEN regexp_SUBSTR(ASSD,1,regexp_instr(ASSD,'...',1)-1)
      ELSE ASSD
    END ASSD
    from 
    (SELECT a.fm_id,
      listagg(a.STUID, '; ') within GROUP (
    ORDER BY a.Fm_id, a.STUID ) ASSD
     from stu_d a
     where fm_id = 1222
     group by a.fm_id
     )

得到错误:

“无效的参数值:0。原因:位置必须为正”

在上面的案例陈述中,它似乎在 -1 或 0 值处失败。

我究竟做错了什么?

标签: snowflake-cloud-data-platform

解决方案


没有看到你的表很难说,但是regexp_instr()当模式位于字符串的开头时会返回 1。然后,减去 1,而 0 是无效的位置参数regexp_substr()文档

也许你打算不SUBSTR使用REGEX_SUBSTR()


推荐阅读