你真的理解T-sql中的NULL嗎?

來源:互聯網
上載者:User

NULL不表示什嗎?
NULL不表示Null 字元串,不表示0。

NULL表示什嗎?
NULL表示不知道是什麼,就是說NULL的原意是不知道是什麼,表示可能什麼都是。

NULL與?做比較大家猜一下上面的4行運算式會返回什嗎?,答案在下面

PRINT (Case When NULL ='Value' Then 'true' else 'false' end)
PRINT (Case When NULL!='Value' Then 'true' else 'false' end)
PRINT (Case When NULL!=NULL Then 'true' else 'false' end)
PRINT (Case When NULL=NULL Then 'true' else 'false' end)

 

 

答案
false
false
false
false

為什麼會有這樣的結果呢?
答案在MSDN上:
A value of NULL indicates that the value is unknown. A value of NULL is different from an empty or zero value. No two null values are equal. Comparisons between two null values, or between a NULL and any other value, return unknown because the value of each NULL is unknown.
既然如此,那我們應該怎樣與NULL值做比較呢,答案是用ISNULL函數,T-sql中ISNULL函數有兩個參數,第一個參數是要檢查是否為NULL的運算式,第二個參數是如果要檢查運算式為NULL時函數的傳回值。

NULL與其他數值做運算大家猜一下上面的語句會PRINT出來什嗎?
答案是什麼都沒有,所有運算都和PRINT NULL是相同結果,結果還是NULL

PRINT NULL
PRINT 1 + NULL;
PRINT 'yukaizhao' + NULL;
DECLARE @d datetime;
SET @d = GETDATE();
PRINT @d + NULL;

 

 

NULL值與索引
如果一個列中有NULL值,那麼不可以在這個列上建唯一索引,可以建立非唯一索引;但是如果一個欄位有很多行有NULL值,那麼在這個欄位上建索引效果不佳。所以建議不在在一個頻繁出現NULL值的欄位上建索引(有待證實)。

NULL與排序
NULL參與排序時總是作為最小值存在,即ORDER BY COL ASC時COL為NULL的行在最前面,反之在最後面。

附註:t-sql中三個關於NULL的函數:
ISNULL(check_expression, replacement_value)

check_expression 與 replacement_value 資料類型必須一致
如果 check_expression 為 NULL,則返回 replacement_value
如果 check_expression 不為 NULL,則返回 check_expression
 

NULLIF 用於檢查兩個運算式,文法:
NULLIF(expression, expression)

如果兩個 expression 相等,則返回 NULL,該 NULL 為第一個 expression 的資料類型
如果兩個 expression 不相等,則返回第一個 expression

COALESCE()函數可以接受一系列的值,如果列表中所有項都為空白(null),那麼只使用一個值。然後,它將返回第一個非空值。這一技巧描述了創造性使用SQL Server 中COALESCE()函數的兩種方法。


轉自:http://www.cnblogs.com/yukaizhao/archive/2008/11/24/t_sql_null.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.