is?。睿酰欤?/span>
查看列數據為空
select*from lrb where lrid is null
ISNULL
使用指定的替換值替換 NULL。
語(yǔ)法
ISNULL ( check_expression , replacement_value )
參數
check_expression
將被檢查是否為 NULL的表達式。check_expression 可以是任何類(lèi)型的。
replacement_value
在 check_expression 為 NULL時(shí)將返回的表達式。replacement_value 必須與 check_expresssion 具有相同的類(lèi)型。
返回類(lèi)型
返回與 check_expression 相同的類(lèi)型。
注釋
如果 check_expression 不為 NULL,那么返回該表達式的值;否則返回 replacement_value。
示例
A. 將 ISNULL 與 AVG 一起使用
下面的示例查找所有書(shū)的平均價(jià)格,用值 $10.00 替換 titles 表的 price 列中的所有 NULL 條目。
USE pubs
GO
SELECT AVG(ISNULL(price, $10.00))
FROM titles
GO
下面是結果集:
--------------------------
14.24
(1 row(s) affected)
B. 使用 ISNULL
下面的示例為 titles 表中的所有書(shū)選擇書(shū)名、類(lèi)型及價(jià)格。如果一個(gè)書(shū)名的價(jià)格是 NULL,那么在結果集中顯示的價(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
下面是結果集:
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次幫助還不太明白, 請問(wèn):
select isnull(數字,0) as 值 from 表名
這樣寫(xiě)是不是 isnull 沒(méi)有生效呢? 如果列名"數字"無(wú)值, 用select還是空值, 并不是顯示一個(gè)數字 0 出來(lái), 為什么? 難道必須用聚合函數這樣寫(xiě)才行嗎?
select isnull(sum(數字),0) as 值 from 表名
這時(shí)若未找到值, 則出來(lái)的結果就是 0 了, 為什么?
使用 isnull 還有其它什么限制嗎?
/////////////////////////////////////////////
你的數字肯定不是null,
可以試試select isnull(null,0) as 值
2 數字字段如果包括 null 則 isnull(數字,0) 結果為0
如果包括 空格 則 isnull(數字,0) 結果為空格
isnull 只用來(lái)判斷是否有null
3 在SQL中,要特別注意空格不是NULL,空格會(huì )當作字符存貯,數字型的數據也不例外。
4 查詢(xún)分析器執行:
select isnull(null,0)
select isnull(null,'被null的字符')
select isnull('null','不會(huì )出來(lái)應為它不是null')
select case when null is null then '是null' else '不是null' end
select case when 'null' is null then '是null' else '不是null' end
5 這句有問(wèn)題:
select isnull(sum(數字),0) as 值 from 表名
如果有數字是null則sum(數字)是NULL,則返回值是0
應該寫(xiě)成;
select sum(isnull(數字,0)) as 值 from 表名
6 這樣說(shuō)吧, 我有一個(gè)表, 其中一個(gè)字段名是 s_z , 類(lèi)型是 int , auto_id 是自增量 identity , 最大的id號是80, 我在查詢(xún)分析器中執行
select isnull(s_z,0) as 數字 from 表名 where id>100
這時(shí)分析器顯示的 "數字" 列下面沒(méi)有內容, 而我用
select isnull(sum(s_z),0) as 數字 from 表名 where id>100
它這里在 "數字" 列下面顯示的值是 0 , 為什么?
7 ISNULL,只會(huì )對該字段是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
這是因為如果沒(méi)有符合條件的記錄,SUM同樣會(huì )返回一個(gè)值NULL,所以仍然有一個(gè)返回值,再用ISNULL,當然會(huì )變成0了。你試試不用ISNULL,看看會(huì )不會(huì )出現一個(gè)NULL的返回值!
12
哦, 明白了, 意思是指我用普通的 select 它在沒(méi)有查找相應的記錄時(shí), 根本沒(méi)有返回任何東東, 而用了 sum 時(shí), 則會(huì )返回 null 對吧.
如果是這樣, 我如何在普通的 select 沒(méi)有返回東東的時(shí)候將它的值設為 0 呢? 已如同 isnull 的功能那樣?
13 “ 我如何在普通的 select 沒(méi)有返回東東的時(shí)候將它的值設為 0 呢?”?我都糊涂了。
select在沒(méi)有符合條件的記錄時(shí)什么也不返回,而集合函數一定返回總計結果null,這難道需要“顛覆”嗎?