检查SQL MAX()函数返回null

时间:2014-06-17 14:14:33

标签: sql-server null max sqldatareader

我的问题是如果我的表是空的,或者我使用max函数的列没有我指定的值,那么为什么sqlDataReader.hasRows为TRUE?

它给出了一个空记录......我该如何解决这个问题?

提前致谢。

4 个答案:

答案 0 :(得分:5)

像MAX()这样的聚合函数将始终每组返回一行。在您的情况下,您的组是整个表。因此,您获得具有MAX值的一行结果集。由于您的表中没有数据,因此MAX值未定义,因此为NULL。

为了更好地理解,尝试用COUNT替换MAX。这也将返回一行,但值为0.我认为这更直观,可以帮助您更好地了解正在发生的事情。

答案 1 :(得分:2)

查询派生表并过滤掉主查询中的null值。

select T.MaxValue
from (
     -- Your query goes here
     select max(Value) as MaxValue
     from YourTable
     where SomeCol > 10
     ) as T
where T.MaxValue is not null

答案 2 :(得分:0)

你可以使用:

  

从tbl

中选择top(从tbl中选择COUNT(*))max(field)

答案 3 :(得分:0)

或者,使用HAVING子句,因为HAVING可以与聚合函数一起使用:

select max(Value) from YourTable where SomeCol > 10
HAVING max(Value) is not null