如何在Snowflake中移除字符串前缀?person表general_id字段精简需求
在Snowflake中精简general_id字段至15字符的解决方案
针对你的需求,有两种高效的处理方式,具体选择取决于字段的格式一致性:
方法一:使用SPLIT_PART(推荐,性能更优)
如果所有general_id的格式都是「前缀内容_目标字符串」,且目标部分始终位于最后一个下划线之后,直接用SPLIT_PART分割取最后一段即可:
SELECT SPLIT_PART(general_id, '_', -1) AS trimmed_general_id FROM person;
如果目标字符串长度可能超过15,再加LEFT函数确保截断到15字符:
SELECT LEFT(SPLIT_PART(general_id, '_', -1), 15) AS trimmed_general_id FROM person;
方法二:使用REGEXP_REPLACE(适配复杂前缀模式)
如果前缀的格式不固定,但始终以最后一个下划线结尾,用正则匹配替换掉前缀部分:
SELECT REGEXP_REPLACE(general_id, '^.*_', '') AS trimmed_general_id FROM person;
同样,要确保结果不超过15字符的话,结合LEFT:
SELECT LEFT(REGEXP_REPLACE(general_id, '^.*_', ''), 15) AS trimmed_general_id FROM person;
这里正则表达式^.*_的含义是:匹配从字符串开头到最后一个下划线的所有内容,将其替换为空,留下下划线后的目标部分。
内容的提问来源于stack exchange,提问作者Truex
相关产品推荐
相关产品推荐

