我需要使用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?可能的原因是什么?感谢。
答案 0 :(得分:3)
评论太长了。
count(*)
永远不应该返回NULL
。子查询可能不返回任何行。这可能会导致子查询中出现NULL
个值,但这实际上来自缺少行。 (不幸的是,SQL中存在混淆。)
您的查询必须返回一行 - 这就是使用SQL进行聚合查询的方式。
您说mylogint
为空。那是非常不同的。这表明您在运行查询时遇到错误。这可能是权限错误,表名无效,语法错误等。
答案 1 :(得分:0)
我希望这有助于你
INSERT INTO mylogint
SELECT COUNT(*) FROM mymessage