我的问题是如果我的表是空的或我使用max函数的列没有我指定的值,那为什么是sqlDataReader.hasRows TRUE?检查SQL MAX()函数返回null
它给出了一个空记录...我该如何解决这个问题?
在此先感谢。
我的问题是如果我的表是空的或我使用max函数的列没有我指定的值,那为什么是sqlDataReader.hasRows TRUE?检查SQL MAX()函数返回null
它给出了一个空记录...我该如何解决这个问题?
在此先感谢。
像MAX()这样的集合函数总是会为每个组返回一行。在你的情况下,你的组是整个桌子。因此你得到一个带有MAX值的单行结果集。由于表中没有数据,因此MAX值未定义,因此为NULL。
为了更好的理解,试着用COUNT代替MAX。这也将返回一行,但值为0.我认为这更直观,并将帮助您更好地了解发生了什么。
将您的查询转化为派生表并在主查询中过滤出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
你可以使用:(从TBL SELECT COUNT(*))
选择顶部最大(场)从TBL
或者,使用HAVING子句因为有可以与骨料使用功能:
select max(Value) from YourTable where SomeCol > 10
HAVING max(Value) is not null
有一排。它是一个包含“NULL”列的行。这就是为什么'hasRows'返回'true'。不要混淆“不返回行”的情况和“一行已返回,它包含'NULL's” –