Snowflake SQL迁移报错:Regexp_Like存在无效转义序列
Netezza转Snowflake迁移:REGEXP_LIKE正则报错的原因与解决办法
报错原因
Snowflake采用ICU正则表达式引擎,而Netezza的正则引擎支持\h转义序列(用于匹配水平空白符,比如空格、制表符),但ICU引擎不识别\h这个转义,这就是触发invalid escape sequence: \h错误的根本原因。
解决办法
将正则表达式中的\h替换为Snowflake支持的等价写法即可:
- 方案1:使用
\p{Blank}(推荐,和\h语义完全一致,匹配所有水平空白符)
修改后的正则表达式:^Renewal\b.*\bDraft\b.*\bPending\b\p{Blank}+\bNon-Renewal\b.* - 方案2:直接指定空白符范围(如果仅需匹配空格和制表符)
修改后的正则表达式:^Renewal\b.*\bDraft\b.*\bPending\b[\t ]+\bNon-Renewal\b.*
替换后,原REGEXP_LIKE语句就能在Snowflake中正常执行了。
内容的提问来源于stack exchange,提问作者MikeLanglois
相关产品推荐
相关产品推荐

