在来自字段的拆分字符串上发出usng正则表达式,然后使用基于布尔结果的条件条件

时间:2019-05-17 15:49:40

标签: sql amazon-redshift

你好,我想在基于redshift的情况下使用case语句,可以从正则表达式中进行解析,然后从中进行决策。

       CASE
         WHEN regexp_like (SPLIT_PART(eel_line,',',21), '^1z.*') THEN SPLIT_PART(eel_line,',',21)
         ELSE SPLIT_PART(eel_line,',',18)
       END AS trackno,

我收到的错误:函数regexp_like(text,“ unknown”)不存在;

当正则表达式匹配时,我想要SPLIT_PART(eel_line,',',21),否则我想要另一个索引。如代码所示,非常感谢。

1 个答案:

答案 0 :(得分:0)

RedShift基于Postgres。使用~进行模式匹配:

WHEN SPLIT_PART(eel_line, ',', 21) ~ '^1z.*') THEN SPLIT_PART(eel_line, ',', 21)

您不需要.*。实际上,您根本不需要正则表达式:

WHEN SPLIT_PART(eel_line, ',', 21) LIKE '1z%') THEN SPLIT_PART(eel_line, ',', 21)