0

我有一个查询,它检查有多少特定类型的记录使用count().

select count(*) from abc where date="some value"

在这里,我的查询是否有可能返回nullDBNull?我应该检查他们吗?

4

6 回答 6

5

我不这么认为:它可以返回零或更大,因为你在数。

NULL将是一个错误的结果,因为没有结果零结果

于 2012-12-03T14:45:34.613 回答
3

不,它总是会返回一个大于或等于的数字0

于 2012-12-03T14:45:48.633 回答
1

就试一试吧:

SELECT COUNT(*) WHERE 1=2
--Returns 0

根据MSDN

COUNT 始终返回一个int数据类型值。

于 2012-12-03T15:06:27.303 回答
0

如果您使用的是 ExecuteScalar,我认为该调用将检索 null 而不是 DbNull 对象。

为了始终接收一个值,我用来封装我的请求:SELECT ISNULL((SELECT COUNT(date) FROM abc WHERE date = "some value"), 0)

哔叽

于 2012-12-03T14:47:33.037 回答
0

您应该检查DbNull它是面向数据库的。

看到这个答案

于 2012-12-03T14:48:12.433 回答
0

这就是我所做的:

if (rdr.HasRows)
        {
          rdr.Read();
          if (rdr["MyField"] != DBNull.Value)
                {
                   bla bla....
                }

所以是的,检查 DBNull。

于 2012-12-03T14:54:09.257 回答