T-sql isnull函式介紹

浪花一朵朵發表於2015-06-01

今天在給同事調取資料的時候,同事反饋說資料偏少,我仔細檢查,發現sql語句條件都正確,邏輯沒哪裡不對,最後經過仔細排查,才發現問題出在null欄位上

表中有一列是允許為null值,比如查詢名字不為測試的商戶名字的記錄

我的查詢為 name<>'測試'為10行,

select * from test name<>'測試'

檢查資料 name='測試' 有90行, 總記錄120行,有20行既不滿足<>'測試',也不='測試',這20行記錄name都是null

如下圖所示,一看便明白:

 

 

在資料錶行記錄中,資料列中經常會有記錄為null,其實null值表示的是未知資料,即空,表示什麼也沒有,

但不是我們所說的'',也不是表示數值0,而是表示未知資料。可以理解未知資料的點位符

null值的處理方式與其他值不同

null不能參與比較,因為是未知值,所以不能用在比較運算子後面,

name<>null,name=null,都是不正確的,

null值不能比較運算子,那怎麼查詢列值是null的呢,

我們必須使用 IS NULL 和 IS NOT NULL 操作符,

如查詢名字為null 的使用者

--記錄為null
SELECT COUNT(1) null記錄數 FROM dbo.Users u WHERE u .Name IS NULL

查詢名字不等於'aaaa'的使用者記錄:

--正確的名字不等於'aaaa'
SELECT * FROM dbo.Users u WHERE ISNULL(u.Name,'')<>'aaaa'

實際上這裡已經用到了isnull函式了,

isnull函式有兩個引數,第一引數是要計算的表示式,第二個是當第一個表示式值為空時的替代值。

 

相關文章