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

如何将SQL中CASE WHEN语句返回的负数结果转换为0

修改方法

你原SQL有一处基础语法错误:字段[E]后缺少逗号,直接执行会报语法错,修改逻辑时需要一并补上。

针对[A] = ''时[B] - [C]出现负数要置0的需求,只需要在对应计算分支追加一层非负判断即可,全数据库通用的写法如下:

SELECT [A], [B], [C], [D], [E],
  CASE  
    WHEN [A] <> '' THEN [B] + [C]  
    WHEN [A] = '' THEN CASE WHEN [B] - [C] < 0 THEN 0 ELSE [B] - [C] END
    ELSE ''  
  END AS [Result]  
FROM [TableA]

如果你用的数据库支持内置函数,还可以用更简洁的写法:

  • 支持IIF逻辑判断的环境(SQL Server 2012+、Access、MySQL等):该分支可直接写为IIF([B] - [C] < 0, 0, [B] - [C])
  • 支持GREATEST取最大值函数的环境(MySQL、PostgreSQL、Oracle等):该分支可直接写为GREATEST([B] - [C], 0),自动返回计算值和0中的较大值,负数会被直接替换为0。

补充提示:如果[B]、[C]是数值类型字段,ELSE ''的返回值会触发隐式类型转换,在部分开启严格模式的数据库中会抛出错误,建议根据业务需求调整ELSE分支的返回值,比如需要空值可替换为NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:18:18