isnull(sum())和sum(isnull())得到的结果不一样,前面的为0,后面为null,怎么回事

yangyonggg 2015-11-13 12:56:33
select isnull(SUM(mr304b.msrqty),0) from mr304b where 1=2

select SUM(isnull(mr304b.msrqty,0)) from mr304b where 1=2

得到的结果不一样,前面的为0,后面的为null,怎么回事
...全文
1085 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2015-11-13
  • 打赏
  • 举报
回复
数据处理的顺序不同, 第1句是先求和后判断是否为null. 第2句是先判断是否为null后求和. 因为是where 1=2,没有符合条件的记录,所以为null.
卖水果的net 2015-11-13
  • 打赏
  • 举报
回复
前一个语句,是对你的 sum 结果,进行一个 isnull 处理,如果是 null ,则转化成 0 后者,是对每个参与计算的数值进行 isnull 处理,你这里写的是 where 1=2 ,也就是没什么参与计算的值,sum 会忽略 null 值,最终的结果也会是 null 。
zbdzjx 2015-11-13
  • 打赏
  • 举报
回复
因为是where 1=2,结果是一条记录都没有,所以,SUM的结果就是NULL,第一句,就将结果的NULL转换成0;第二句,结果就是NULL了(因为一条记录都没有,所以SUM里面的ISNULL根本就没起作用)。

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧