is?。睿酰欤?/span>
查看列數(shù)據(jù)為空
select*from lrb where lrid is null
ISNULL
使用指定的替換值替換 NULL。
語法
ISNULL ( check_expression , replacement_value )
參數(shù)
check_expression
將被檢查是否為 NULL的表達(dá)式。check_expression 可以是任何類型的。
replacement_value
在 check_expression 為 NULL時(shí)將返回的表達(dá)式。replacement_value 必須與 check_expresssion 具有相同的類型。
返回類型
返回與 check_expression 相同的類型。
注釋
如果 check_expression 不為 NULL,那么返回該表達(dá)式的值;否則返回 replacement_value。
示例
A. 將 ISNULL 與 AVG 一起使用
下面的示例查找所有書的平均價(jià)格,用值 $10.00 替換 titles 表的 price 列中的所有 NULL 條目。
USE pubs
GO
SELECT AVG(ISNULL(price, $10.00))
FROM titles
GO
下面是結(jié)果集:
--------------------------
14.24
(1 row(s) affected)
B. 使用 ISNULL
下面的示例為 titles 表中的所有書選擇書名、類型及價(jià)格。如果一個(gè)書名的價(jià)格是 NULL,那么在結(jié)果集中顯示的價(jià)格為 0.00。
USE pubs
GO
SELECT SUBSTRING(title, 1, 15) AS Title, type AS Type,
ISNULL(price, 0.00) AS Price
FROM titles
GO
下面是結(jié)果集:
Title Type Price
--------------- ------------ --------------------------
The Busy Execut business 19.99
Cooking with Co business 11.95
You Can Combat business 2.99
Straight Talk A business 19.99
Silicon Valley mod_cook 19.99
The Gourmet Mic mod_cook 2.99
The Psychology UNDECIDED
有關(guān)ISNULL的使用
最近用isnull用的很不爽.看了N次幫助還不太明白, 請(qǐng)問:
select isnull(數(shù)字,0) as 值 from 表名
這樣寫是不是 isnull 沒有生效呢? 如果列名"數(shù)字"無值, 用select還是空值, 并不是顯示一個(gè)數(shù)字 0 出來, 為什么? 難道必須用聚合函數(shù)這樣寫才行嗎?
select isnull(sum(數(shù)字),0) as 值 from 表名
這時(shí)若未找到值, 則出來的結(jié)果就是 0 了, 為什么?
使用 isnull 還有其它什么限制嗎?
/////////////////////////////////////////////
你的數(shù)字肯定不是null,
可以試試select isnull(null,0) as 值
2 數(shù)字字段如果包括 null 則 isnull(數(shù)字,0) 結(jié)果為0
如果包括 空格 則 isnull(數(shù)字,0) 結(jié)果為空格
isnull 只用來判斷是否有null
3 在SQL中,要特別注意空格不是NULL,空格會(huì)當(dāng)作字符存貯,數(shù)字型的數(shù)據(jù)也不例外。
4 查詢分析器執(zhí)行:
select isnull(null,0)
select isnull(null,'被null的字符')
select isnull('null','不會(huì)出來應(yīng)為它不是null')
select case when null is null then '是null' else '不是null' end
select case when 'null' is null then '是null' else '不是null' end
5 這句有問題:
select isnull(sum(數(shù)字),0) as 值 from 表名
如果有數(shù)字是null則sum(數(shù)字)是NULL,則返回值是0
應(yīng)該寫成;
select sum(isnull(數(shù)字,0)) as 值 from 表名
6 這樣說吧, 我有一個(gè)表, 其中一個(gè)字段名是 s_z , 類型是 int , auto_id 是自增量 identity , 最大的id號(hào)是80, 我在查詢分析器中執(zhí)行
select isnull(s_z,0) as 數(shù)字 from 表名 where id>100
這時(shí)分析器顯示的 "數(shù)字" 列下面沒有內(nèi)容, 而我用
select isnull(sum(s_z),0) as 數(shù)字 from 表名 where id>100
它這里在 "數(shù)字" 列下面顯示的值是 0 , 為什么?
7 ISNULL,只會(huì)對(duì)該字段是null值的起作用
8 select sum(1) from sysobjects where 1=2
它會(huì)返回一個(gè)null
9 select 1 from sysobjects where 1=2
它什么也不返回如果你要:
select isnull((select 1 from sysobjects where 1=2),0)
10
這是因?yàn)槿绻麤]有符合條件的記錄,SUM同樣會(huì)返回一個(gè)值NULL,所以仍然有一個(gè)返回值,再用ISNULL,當(dāng)然會(huì)變成0了。你試試不用ISNULL,看看會(huì)不會(huì)出現(xiàn)一個(gè)NULL的返回值!
12
哦, 明白了, 意思是指我用普通的 select 它在沒有查找相應(yīng)的記錄時(shí), 根本沒有返回任何東東, 而用了 sum 時(shí), 則會(huì)返回 null 對(duì)吧.
如果是這樣, 我如何在普通的 select 沒有返回東東的時(shí)候?qū)⑺闹翟O(shè)為 0 呢? 已如同 isnull 的功能那樣?
13 “ 我如何在普通的 select 沒有返回東東的時(shí)候?qū)⑺闹翟O(shè)為 0 呢?”?我都糊涂了。
select在沒有符合條件的記錄時(shí)什么也不返回,而集合函數(shù)一定返回總計(jì)結(jié)果null,這難道需要“顛覆”嗎?