我的問題是如果我的表是空的或我使用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」 –