数据库中isnull函数和sum函数先后顺序的区别
举例
表数据
RowID | TotalAmount |
---|---|
1 | NULL |
2 | 100.00 |
建表语句
CREATE TABLE [Amount](
[RowID] [bigint] IDENTITY(1,1) NOT NULL,
[TotalAmount] [decimal](18, 2) NULL
) ON [PRIMARY]
INSERT [Amount] ([RowID], [TotalAmount]) VALUES (1, NULL)
INSERT [Amount] ([RowID], [TotalAmount]) VALUES (2, 100.00)
select SUM(TotalAmount) as SumAmount from Amount -- 100.00
select ISNULL(SUM(TotalAmount),0) as SumAmount from Amount -- 100.00
select SUM(ISNULL(TotalAmount,0)) as SumAmount from Amount -- 100.00
-- 查询的条件表里不存在
select ISNULL(SUM(TotalAmount),0) as SumAmount from Amount where RowID=3 -- 0.00
select SUM(ISNULL(TotalAmount,0)) as SumAmount from Amount where RowID=3 -- NULL
sum的工作原理
由于sum是在对列进行相加的时候会在对值为null的行跳过,若单独使用sum函数时只有null数据的时候会跳过这些数据返回null,而没有数据进行sum的时候也会返回null
结论
在sum有数据的时候,isnull在sum的外面和isnull在sum的里面是没有区别的,
当sum函数没有数据的时候,则需要将isnull函数放在外面防止sum的无数据的时候isnull不起作用。
使用时,当不希望返回值含有NULL时,写成ISNULL(SUM(字段),0)
本文作者:KeepChasing
本文链接:https://www.cnblogs.com/idbb98/p/17050129.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步