带有正则表达式的雪花

时间:2020-12-30 19:53:34

标签: snowflake-cloud-data-platform

尝试在 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。原因:位置必须为正”

在上面的 case 语句中,它似乎在 -1 或 0 值处失败。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

也许您打算使用 SUBSTR 而不是 REGEX_SUBSTR()