代码之家  ›  专栏  ›  技术社区  ›  Jun Ge

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

  •  0
  • Jun Ge  · 技术社区  · 8 年前

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

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

    mylogint是一个简单的表:

    create table mylogint
    (value int)
    

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

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

    2 回复  |  直到 8 年前
        1
  •  3
  •   Nimantha Thatkookooguy    4 年前

    count(*) 不应该再回来 NULL . 子查询可能不返回任何行。这可能会导致 无效的 子查询中的值,但这实际上是由于缺少行(SQL中的一种不幸的混淆)。

    查询必须返回一行,这就是SQL聚合查询的工作方式。

    你是这么说的 mylogint 空的 . 这是非常不同的。这表明您在运行查询时出错。这可能是权限错误、表名无效、语法错误等。

        2
  •  0
  •   Bibin Mathew    8 年前

    我希望这对你有帮助

     INSERT INTO mylogint
     SELECT COUNT(*) FROM mymessage