我应该在查询中检查null或dbnull

时间:2012-12-03 14:43:24

标签: c# sql-server-2008

我有一个查询,使用count()检查某个类型的记录数。

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

在这里,我的查询可能会返回nullDBNull吗?我应该检查一下吗?

6 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

不,它总会返回大于或等于0的数字。

答案 2 :(得分:1)

试一试:

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

MSDN

  

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

答案 3 :(得分:0)

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

为了总是收到一个值,我用来做的是封装我的请求: SELECT ISNULL((SELECT COUNT(date)FROM abc WHERE date =“some value”),0)

塞尔

答案 4 :(得分:0)

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

请参阅此answer

答案 5 :(得分:0)

这就是我的所作所为:

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

所以,请检查DBNull。