在SQL Server中使用ISNULL執(zhí)行空值判斷查詢
有如下查詢:
select isnull(lastchanged,'') as lastchanged from vhhostlist where s_comment='test202'
本來,ISNULL函數(shù)只有一個(gè)參數(shù),它表示的含義就是判斷這個(gè)參數(shù)的值是否為NULL,是NULL則返回TRUE,否則返回FALSE;
但是,在SQLServer的查詢語句中,isnull需要兩個(gè)參數(shù),它的含義是如果參數(shù)1為NULL,則以參數(shù)2為isnull函數(shù)的返回值;
即,上面查詢的的含義是,查詢vhhostlist表中s_comment='test202'那一行l(wèi)astchanged字段的值,如果它為NULL,則返回一個(gè)空字符串;
記得以前不懂這個(gè)的時(shí)候,遇到這樣一個(gè)情況:一張訂單表,其中一個(gè)字段是status,訂單提交上來時(shí)status為NULL。 在程序里要做如下判斷,當(dāng)它為NULL時(shí),顯示一個(gè)審核的超鏈接;當(dāng)它不為空時(shí),顯示一個(gè)字符串:已審。當(dāng)時(shí)的程序是這樣寫的:
if rs("status")<>"" then
response.write "<span style='color:red;'>已審</span>"
else
response.write "<a href=check.asp?id=" & rs("id") & ">審核</a>"
end if
其實(shí)這樣的判斷是不慎密的,rs("status")<>""并不代表就rs("status")就等于已經(jīng)審核;也并不表示rs("status")<>""以外的情況就是未審狀態(tài);
最合理的應(yīng)該就是用isnull(status,'') as status把status查出來,如果rs("status")=""則表示未審,這是一定成立的!
相關(guān)文章
SQL Server代理服務(wù)無法啟動(dòng)的解決方法
錯(cuò)誤MSSQLSERVERSQLServerAgent could not be started (reason: SQLServerAgent 必須能夠以 SysAdmin 身份連接到 SQLServer,但“(未知)”不是 SysAdmin 角色的成員)2013-02-02
SQL Server的FileStream和FileTable深入剖析
互聯(lián)網(wǎng)時(shí)代數(shù)據(jù)是爆炸式增長,我們常常需要把結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)存儲在一起。本文將介紹幾種解決方案2012-11-11
SQLSERVER中得到執(zhí)行計(jì)劃的兩種方式
得到執(zhí)行計(jì)劃的方式有兩種:一種是在指令的前面打開一些開關(guān),讓執(zhí)行計(jì)劃信息打在結(jié)果集里,這種方法比較適合在一個(gè)測試環(huán)境里對單個(gè)語句調(diào)優(yōu);另一種方法是使用SQL Trace里的事件跟蹤來跟蹤語句的執(zhí)行計(jì)劃,感興趣的朋友可以了解下2013-01-01
SQL Server中數(shù)學(xué)函數(shù)的用法
這篇文章介紹了SQL Server中數(shù)學(xué)函數(shù)的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
SQLServer中匯總功能的使用GROUPING,ROLLUP和CUBE
查看SQL Server的幫助才發(fā)現(xiàn),厲害啊,原來還有這么厲害的東西,不由的想起以前做水晶報(bào)表的時(shí)候,原來在SQL Server中就可以實(shí)現(xiàn)這樣的功能.2010-07-07

