AWS Redshift中保留字符串首个连字符后的子串问题求助
解决方案:提取AWS Redshift中首个连字符后的子串
针对你需要保留首个连字符之后所有内容的需求,以下两种方法可以在AWS Redshift中实现:
方法1:使用非贪婪正则匹配
默认的.*-是贪婪匹配,会匹配到最后一个连字符,改用非贪婪模式的.*?-即可只匹配首个连字符之前的部分,替换为空后得到目标子串:
-- 测试多连字符场景 SELECT REGEXP_REPLACE('00-11-22-33', '.*?-', '') AS result; -- 输出:11-22-33 -- 测试单连字符场景 SELECT REGEXP_REPLACE('00-112233', '.*?-', '') AS result; -- 输出:112233
方法2:使用POSITION结合SUBSTRING
先定位首个连字符的位置,再从该位置的下一位开始截取子串:
-- 测试多连字符场景 SELECT SUBSTRING('00-11-22-33', POSITION('-' IN '00-11-22-33') + 1) AS result; -- 输出:11-22-33 -- 测试单连字符场景 SELECT SUBSTRING('00-112233', POSITION('-' IN '00-112233') + 1) AS result; -- 输出:112233
两种方法均适用于所有至少包含一个连字符的字符串,无需额外处理边界情况。
内容的提问来源于stack exchange,提问作者Arturo Sbr
相关产品推荐
相关产品推荐

