mysql中is not null和!=null及null介紹

來源:互聯網
上載者:User

在mysql中,篩選非空的時候經常會用到is not null和!=null,這兩種方法單從字面上來看感覺是差不多的,其實如

果去運行一下試試的話差別會很大!

為什麼會出現這種情況呢?

null 表示什麼也不是, 不能=、>、< … 所有的判斷,結果都是false,所有只能用 is null進行判斷。
預設情況下,推薦使用 IS NOT NULL去判斷,因為SQL預設情況下對!= Null的判斷會永遠返回0行,但沒有語法錯誤


如果你一定想要使用!= Null來判斷,需要加上這個語句:

set ANSI_NULLS off

這時你會發現IS NOT NULL 和 != null 是等效的


個欄位如果設為“NULL”,表示如果這個欄位的值為空白時,自動插入一個“NULL”值。

一個欄位如果設為“NOT NULL”,表示如果這個欄位的值為空白時,不自動插入“NULL”值(任其無值)。

所以,設為“NULL”的意思反而是“不能無值”(由MYSQL自動賦“NULL”值),而設為“NOT NULL”是“可以無值”

其實要證明這一點很簡單,建一個測試表,兩個欄位(VC型),一個設為“NULL”,一個設為“NOT NULL”,兩個都

插入空值,看看結果就明白了。

NULL 不是 '' 也不是 0。

你的欄位定義為 not null,但是卻賦值了一個 null,那麼資料庫系統會按照該欄位類型選擇一個預設的值放進去,

比如 char 就是用Null 字元串。
但注意,Null 字元串其實已經是一個確定的值了,就是一個長度為 0 的字串!

至於 NULL 值,給你一個正確的理解:把 NULL 理解為 UNKNOWN。
主要意思是'不知道',就是它可能是任何值;
另外一層意思是'資訊缺失',比如某個儲存姓名資訊的欄位值是 NULL,代表姓名資訊缺失。
所以 NULL 值不是任意一個確定的值!

舉例來說,邏輯 與/或 運算會的吧?
與運算:true and true = true, true and false = false, false and true = false, false and false =

false
第一個 true and null,它的結果完全靠 null 確定。如果它是 true 結果就是 true,如果它是 false,結果就是

false。因為 null 代表不知道,所以結果也是不知道,所以是 null。

第二個 false and null,它的結果不需要靠 null 確定,因為 and 運算的特性,有 false 出 false,所以結果是

false。

第三個 null and null,就好理解了吧,它完全就是空對空了,兩個運算元都是不知道,結果自然也是不知道,所以

是 null。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.