SQL与Snowflake正则表达式应用:移除字符串末尾的数字和标点符号
Snowflake字符串末尾清洗实现方案
直接使用Snowflake内置的REGEXP_REPLACE函数即可实现需求,核心逻辑是捕获字符串开头到最后一个字母的有效内容,替换掉末尾所有数字、标点、空格等无效字符。
核心SQL代码
SELECT REGEXP_REPLACE(待处理字段名, '^(.*[a-zA-Z])[^a-zA-Z]*$', '$1') AS 清洗后字段 FROM 你的表名;
正则说明
^(.*[a-zA-Z]):捕获从字符串开头到最后一个英文字母的所有内容,开头的数字、中间的连字符、空格都会被正常保留[^a-zA-Z]*$:匹配字符串末尾所有非英文字母的内容(含数字、标点、特殊符号、空格),这部分会被丢弃
示例测试
你可以直接运行以下代码验证效果:
SELECT REGEXP_REPLACE('1234 Pharmacy #344455', '^(.*[a-zA-Z])[^a-zA-Z]*$', '$1') AS 测试结果1, REGEXP_REPLACE('Hy-Vee Pharmacy #2 (1658)', '^(.*[a-zA-Z])[^a-zA-Z]*$', '$1') AS 测试结果2;
运行输出和需求完全一致:
| 测试结果1 | 测试结果2 |
|---|---|
| 1234 Pharmacy | Hy-Vee Pharmacy |
扩展兼容
如果你的业务场景中会出现中文、日文等非英文字母的内容,可以改用Unicode字符类匹配所有语言的字母,兼容性更强:
REGEXP_REPLACE(待处理字段名, '^(.*\\p{L})[^\\p{L}]*$', '$1')
内容的提问来源于stack exchange,提问作者user11644013
相关产品推荐
相关产品推荐

