为什么会出现"警告: 聚合或其它 SET 操作消除了空值。"

sanjie88 2005-03-09 12:57:36
可能是因为多用了UPDATE 的语句, 我的存储过程出现了这个警告,我不知道这对程序有没有影响,谁能告诉我
...全文
1660 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shove 2005-04-04
  • 打赏
  • 举报
回复
to wudan8057(开心每一天)

调用
SET ANSI_WARNINGS OFF
的确不警告了,呵呵。 可是得出的错误结果怎么办呢?这是自欺欺人的方式哈哈。
你的楼上是正确的处理方法
wudan8057 2005-03-28
  • 打赏
  • 举报
回复
调用
SET ANSI_WARNINGS OFF

wyb0026 2005-03-28
  • 打赏
  • 举报
回复
id money memo
------------------------
1 120.00 sddfdf
2 120.00 sdfsadfs
3 null sadfsdf

如楼上所述,我一般处理的办法sum(isnull(money,0)) 给null值以默认值0
shove 2005-03-28
  • 打赏
  • 举报
回复
这是因为有的行的字段内容为 null 值,
聚合函数会忽略 值为 null 的行,所以,count(*) 统计的值不含这些行在内。
另外:
id money memo
------------------------
1 120.00 sddfdf
2 120.00 sdfsadfs
3 null sadfsdf

对于此表,select sum([money]) from ... 将不会得到240.00,而是null,因为聚合函数将null值参与计算,任何值加null后等于 null
sanjie88 2005-03-09
  • 打赏
  • 举报
回复
why?
sanjie88 2005-03-09
  • 打赏
  • 举报
回复
update table_a1_2
set table_a1_2.b1=b.b1
from( select count(*) as 'b1',tradedate as 'date' from table_a1_1 a
where a.tradedate between @startdate and @enddate
and a.r<=9999
group by a.tradedate) b
where table_a1_2.tradedate=b.[date]
我只是这样的语句很多,才会出现这样的问题,为什么?
xluzhong 2005-03-09
  • 打赏
  • 举报
回复
没关系吧?
SET NOCOUNT
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。

语法
SET NOCOUNT { ON | OFF }

注释
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。

即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。

当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
sanjie88 2005-03-09
  • 打赏
  • 举报
回复
set nocount on 是不是会引起"警告: 聚合或其它 SET 操作消除了空值。"
sanjie88 2005-03-09
  • 打赏
  • 举报
回复
set nocount on 是不是不能用?
xluzhong 2005-03-09
  • 打赏
  • 举报
回复
代码?
sanjie88 2005-03-09
  • 打赏
  • 举报
回复
谁来救我

11,849

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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