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

如何在SQL中使用ISNULL与ROUND函数处理空值,保证结果非空

解决方案

问题根源是当MeanScore为NULL时,任何包含它的算术运算结果都会变成NULL,导致overall和Total为空。解决方法是先将MeanScore的空值转为0,再进行计算,同时修正原SQL的语法错误:

修正后的SQL语句:

SELECT 
  ISNULL(ROUND((1 - ((5 - ISNULL(t1.MeanScore, 0)) * 0.15)) * 6, 1), 0) AS overall,
  ISNULL(t1.[Final Grade], 0)
  + ISNULL(ROUND((1 - ((4 - ISNULL(t1.MeanScore, 0)) * 0.15)) * 6, 1), 0)
  AS Total
FROM grades t1

关键修改点:

  • 所有用到t1.MeanScore的地方,用ISNULL(t1.MeanScore, 0)替换,确保空值被转为0参与运算,避免整个表达式返回NULL。
  • 对ROUND的结果额外套一层ISNULL(..., 0),做双重保险(即使极端情况计算结果仍为空,也会转为0)。
  • 修正原SQL的语法错误:去掉overall字段后的逗号(否则Total的计算式会被当作独立字段),同时修正笔误的ENS(直接用AS Total即可)。
  • 把06改为6(虽然SQL会识别为数字6,但标准写法不要加前导零)。

如果你的SQL方言支持COALESCE(比如PostgreSQL、MySQL等),也可以用COALESCE(t1.MeanScore, 0)替代ISNULL,效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:13:18