You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何通过正则仅移除紧跟字母后的数字0

实现方法

你之前的写法没有加匹配约束,会替换字符串中所有的0。要实现仅删除字母后紧跟的0,用正则捕获组匹配对应结构即可,核心是保留匹配到的字母,只删除紧跟的0。

正确的SQL语句:

SELECT regexp_replace('g06, f03, k090', '([a-zA-Z])0', '$1')

规则说明

  • 正则参数([a-zA-Z])0的匹配逻辑:
    • ([a-zA-Z]) 是第一个捕获组,匹配任意单个英文字母
    • 后续的0限定只匹配紧跟在字母后的数字0,其他位置的0不会被命中
  • 替换值$1代表引用第一个捕获组匹配到的内容,也就是把「字母+0」的匹配结果替换成字母本身,等价于删掉字母后面的那个0

效果验证

  • 对测试串g06, f03, k090执行后,g0替换为g、f0替换为f、k0替换为k,最终输出g6, f3, k90,完全符合预期
  • 单独测试你示例里的k090串,执行后返回k90,串末尾的0因为前面是数字9,不属于字母后紧跟的0,会被完整保留
  • 如果你的数据库环境不支持$1的捕获组引用格式,把替换值换成\\1即可适配。

内容的提问来源于stack exchange,提问作者inmemoryofer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:36:28