MySQL中is not null和!=null和<>null的區別

pythontab發表於2017-02-22

在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”是“可以無值”

相關文章