Snowflake中如何删除字符串末尾数字段之后的任意可变字符
问题原因
你的正则逻辑已经能正确匹配到目标数字段(6位数字+横杠+5位数字)及之后的所有内容,但因为你将匹配到的整体内容替换成了空字符串,所以连带捕获到的目标数字段也被一同删除了。
解决方法
将替换值改为第一个捕获组的引用即可,仅保留匹配到的目标数字段,丢弃后续内容:
-- 适用于PostgreSQL、Oracle等数据库 SELECT REGEXP_REPLACE('22-ABCD-BC-220602-11484-TEST', '([0-9]{6}-[0-9]{5}).*$', '\1'); -- 若使用MySQL、SQL Server等数据库,捕获组引用改用$1即可 SELECT REGEXP_REPLACE('22-ABCD-BC-220602-11484-TEST', '([0-9]{6}-[0-9]{5}).*$', '$1');
执行后输出结果为22-ABCD-BC-220602-11484,完全符合需求。
内容的提问来源于stack exchange,提问作者Mahta Alijani
相关产品推荐
相关产品推荐

