小编sou*_*ser的帖子

为什么sql server需要先把count(*)结果转换成int再与int变量比较?

我的应用程序中有很多查询,其中在 have 子句中,我将 count 聚合函数与 int 变量进行了比较。在查询计划中,我可以在比较之前看到一个implicit_convert。我想知道为什么会发生这种情况,因为根据 sql server 文档,count 函数的返回类型是 int。那么为什么要进行隐式转换来比较两个 int 值呢?

以下是一个这样的查询计划的一部分,其中 @IdCount 被定义为一个 int 变量。

|--过滤器(WHERE:([Expr1022]=[@IdCount]))    
 |--计算标量(DEFINE:([Expr1022]=CONVERT_IMPLICIT(int,[Expr1028],0))) 
  |--Stream Aggregate(GROUP BY:([MOCK_DB].[dbo].[Scope].[ScopeID]) DEFINE:([Expr1028]=Count(*)))

sql-server-2008 sql-server

12
推荐指数
1
解决办法
5494
查看次数

标签 统计

sql-server ×1

sql-server-2008 ×1