Snowflake中为字符串添加逗号:尝试方法未达预期
在Snowflake中为城市州字符串添加逗号的正确实现
你的问题出在直接拼接了完整的原字符串和州缩写,导致州名重复。以下是两种可靠的解决方法:
方法一:使用正则表达式替换(推荐,适配含空格的城市名)
利用REGEXP_REPLACE匹配字符串末尾的空格加两位州缩写,将空格替换为, :
REGEXP_REPLACE(b2_loc, ' (..)$', ', \\1') AS b2_loc
- 正则
' (..)$'的含义:匹配字符串末尾的空格加上最后两个字符 ', \\1'表示将匹配到的空格替换为,,同时保留原有的两位州缩写(\\1是正则捕获组,对应匹配到的两个字符)- 示例:
New York NY会被转换为New York, NY
方法二:使用字符串截取函数(适用于固定格式的字符串)
如果确定所有字符串都是「城市名 + 空格 + 两位州缩写」的格式,可以通过截取字符串拼接实现:
LEFT(b2_loc, LENGTH(b2_loc) - 3) || ', ' || RIGHT(b2_loc, 2) AS b2_loc
LENGTH(b2_loc) - 3计算出城市名部分的长度(减去空格+两位州缩写的3个字符)LEFT截取城市名,RIGHT截取州缩写,中间拼接,- 示例:
Austin TX长度为8,LEFT(b2_loc, 8-3)得到Austin,最终拼接为Austin, TX
内容的提问来源于stack exchange,提问作者Maggie Goldberg
相关产品推荐
相关产品推荐

