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

PostgreSQL如何替换仅含单连字符的单元格为0且不影响负数?

解决方案

你之前的写法会匹配所有位置的连字符、加上全局替换参数g,所以会误替换负数的负号,改用以下两种方案都可以实现需求:

  • 方法1:调整regexp_replace的正则模式
    把正则规则改为匹配整个单元格仅为单个连字符的规则,SQL写法参考:
regexp_replace("M1KW", '^-$', '0')

这里^代表字符串开头,$代表字符串结尾,组合后只会命中内容完全等于-的单元格,不会影响负数前缀的负号,也不需要加全局替换的g参数。

  • 方法2:用条件判断逻辑更直观
    如果你的数据库支持CASE WHEN语句,可以直接判断值是否为单个连字符再替换,可读性更高不容易出错:
CASE WHEN "M1KW" = '-' THEN '0' ELSE "M1KW" END

替换完成后即可直接将列转换为numeric类型执行后续计算。

示例数据:
示例数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 23:54:02