为什么Count(*)在ODBC连接中返回NULL到sql server?

时间:2018-01-25 12:57:06

标签: sql sql-server odbc

我需要使用ODBC在sql server数据库上执行简单的sql查询。 sql代码如下:

insert into mylogint
EXEC(
'select count(*) from mymessage'
)

mylogint是一个简单的表格:

create table mylogint
(value int)

但有时我发现表mylogint为空,因为当ODBC连接sql server实例时count()返回NULL。我的意思是计数()返回NULL而不是int,我确信mymessage不是空的。我发现count(*)在某些sql实例上返回NULL,在其他实例上返回int。

你知道为什么count(*)在这种情况下返回NULL?可能的原因是什么?感谢。

2 个答案:

答案 0 :(得分:3)

评论太长了。

count(*)永远不应该返回NULL。子查询可能不返回任何行。这可能会导致子查询中出现NULL个值,但这实际上来自缺少行。 (不幸的是,SQL中存在混淆。)

您的查询必须返回一行 - 这就是使用SQL进行聚合查询的方式。

您说mylogint 为空。那是非常不同的。这表明您在运行查询时遇到错误。这可能是权限错误,表名无效,语法错误等。

答案 1 :(得分:0)

我希望这有助于你

 INSERT INTO mylogint
 SELECT COUNT(*) FROM mymessage