Snowflake/Matillion正则问题:含字母或连字符的字段置为0
问题解决:Snowflake中替换含字母或连字符的字段值
你的原SQL问题出在正则表达式的模式上:[a-zA-Z]*仅匹配0个或多个字母,既没覆盖连字符,且*允许空匹配,导致只有纯字母的字段被替换,不符合「只要包含字母或连字符就转为0」的需求。
修改后的SQL语句如下:
select SHIP_TO_CUSTOMER_NUMBER, CASE WHEN REGEXP_LIKE(SHIP_TO_CUSTOMER_NUMBER, '[a-zA-Z-]') THEN '0' ELSE SHIP_TO_CUSTOMER_NUMBER END as test_field from sales_fact_m3;
说明:
[a-zA-Z-]是字符集合,匹配任意大小写字母或连字符- Snowflake的
REGEXP_LIKE默认会检查字符串中是否存在匹配的子串,只要字段里有字母或连字符,就会触发替换为0的逻辑 - 纯数字的字段会保留原值
内容的提问来源于stack exchange,提问作者Pray4Tre
相关产品推荐
相关产品推荐

