mysql中 與null值不能比較

2021-07-10 18:45:32 字數 1196 閱讀 2544

在mysql中,選擇某field為不等於某值的時候,使用<>符號。但查bug時發現該field為null的並不能查出來。

查原因為:

null值不能與其他值進行比較,只能使用is null或is not null來進行判斷。

所以,限制條件需要寫:

(field is null or field<>value)

這樣才行。

一鍵約師傅

資料庫中存在null,那麼怎樣查詢這些值是null的記錄呢?

查詢到某乙個欄位是null的記錄,最簡單的想法可能是這樣:

select *from  tablename where columnname = null

但是這樣是不行的,因為null不能和任何值比較。在sql中,null值與任何其它值的比較(即使是null)永遠不會為「真」。包含null的表示式總是會匯出null值,除非在關於操作符的文件中以及表示式的函式中作了其他規定。

我曾經犯的錯誤如下:

注意,紅色字型的查詢條件只能查詢出pass_name!='batch'且不為null的字段(null不能和任何值比較,即使是null也不會是true),如果需要查詢出pass_name是null的字段,必須顯示的加上:or pass_name is null

select count(*) from 表名 where from_unixtime(submit_time) >= '2012-08-01' and from_unixtime(submit_time) < '2013-07-01' and pass_name <> 'test'(錯誤)

查詢出包含null且pass_name!='batch'的資料:

select count(*) from 表名 where from_unixtime(submit_time) >= '2012-08-01' and from_unixtime(submit_time) < '2013-07-01' and (pass_name <> 'test' or pass_name is null)(正確查出pass_name!=null及pass_name是null的)

null表示的含義是未知,即不知道有沒有。和『』空字串不等,因為空字串相當於沒有值。null代表的是不知道有沒有值。所以在資料查詢中如果字段預設值是null,想查詢出不等於某個條件的一定要加上——欄位名 is null 或者欄位名 is not null來包含是null或者不是null的字段

end

mysql 使用者變數不能賦予null值

查詢的user id 不為null mysql select userid user id from ta user info where account name 13870957087 select if userid is not null 1,0 select userid 結果 useri...

MySQL中null值問題

今天寫答疑系統的時候,寫了這樣一截 session start db mysqli connect localhost root root qa tname post teacher q select schedule,place from time where tname tname and sn...

mysql中NULL與 區別

在mysql中 空值 和 null 的概念 首先,我們要搞清楚 空值 和 null 的概念 1 空值是不占用空間的 2 mysql中的null其實是占用空間的 下面來分析下建立的語句 建立test表 create table test id int 10 unsigned not null auto...