有如下查詢:
復制代碼 代碼如下:
select isnull(lastchanged,'') as lastchanged from vhhostlist where s_comment='test202'
本來,ISNULL函數只有一個參數,它表示的含義就是判斷這個參數的值是否為NULL,是NULL則返回TRUE,否則返回FALSE;
但是,在SQLServer的查詢語句中,isnull需要兩個參數,它的含義是如果參數1為NULL,則以參數2為isnull函數的返回值;
即,上面查詢的的含義是,查詢vhhostlist表中s_comment='test202'那一行lastchanged字段的值,如果它為NULL,則返回一個空字符串;
記得以前不懂這個的時候,遇到這樣一個情況:一張訂單表,其中一個字段是status,訂單提交上來時status為NULL。 在程序裡要做如下判斷,當它為NULL時,顯示一個審核的超鏈接;當它不為空時,顯示一個字符串:已審。當時的程序是這樣寫的:
復制代碼 代碼如下:
if rs("status")<>"" then
response.write "<span style='color:red;'>已審</span>"
else
response.write "<a href=check.asp?id=" & rs("id") & ">審核</a>"
end if
其實這樣的判斷是不慎密的,rs("status")<>""並不代表就rs("status")就等於已經審核;也並不表示rs("status")<>""以外的情況就是未審狀態;
最合理的應該就是用isnull(status,'') as status把status查出來,如果rs("status")=""則表示未審,這是一定成立的!
你是因為這個result字段有null,而得不到正確的數值吧
這樣
select SUM(isnull(Result,0)) as Result from PDS_LabResultData a
其實就是用isnull函數
isnull(Result,0) 意思就是如果result為null,則賦值為0
SQL server裡,01/01/1900 12:00:00 AM 也視為空 ('',不是null)