Snowflake SQL中Regex单词边界失效,CT替换为COURT失败求助
Snowflake SQL中CT替换为COURT的问题解决
你写的正则替换没生效的核心原因是Snowflake的SQL字符串转义规则:单个反斜杠\是SQL的转义字符,你写的\b会被解析成退格符,完全不是正则表达式里的单词边界。
要正确使用正则的单词边界,必须把\b写成双反斜杠\\b,修改后的语句如下:
select regexp_replace('36 HERITAGE CT', '\\bCT\\b', 'COURT'), regexp_replace('36 HERITAGE CT #204', '\\bCT\\b', 'COURT')
执行后就能得到预期的36 HERITAGE COURT和36 HERITAGE COURT #204。
如果需要覆盖更多边缘场景(比如CT前后有非空白的分隔符号),可以用更灵活的正则逻辑,匹配CT处于非单词字符或字符串首尾的位置:
select regexp_replace('36 HERITAGE CT', '(^|\\W)CT(\\W|$)', '\\1COURT\\2'), regexp_replace('36 HERITAGE CT #204', '(^|\\W)CT(\\W|$)', '\\1COURT\\2')
内容的提问来源于stack exchange,提问作者Evan Hobbs
相关产品推荐
相关产品推荐

