null值對於新手來說非常容易混淆,經常會被認為null與空字串''是一樣的,但事實上,這兩者是非常不一樣,null表示的是「a missing unknown value」,而字串''是乙個確定的值。
為了處理和null相關的比較,在mysql中可以用is null、is not null、<=>、isnull()來測試比較,不能用如=、<、<>來和null值比較測試,任何值(包括和null本身)與null對比和函式運算操作結果都為null
但是當用distinct、group by、order by時,此時不同的null值被視為相等計算。
最重要的是,在mysql中,0和null代表假,其它的任何值都代表真
用order by ... asc時,null值會被放在最前面,而用order by ... desc時,null時會被放在最後面,相當於null是乙個無窮小的值。
聚合函式如count(),min(),sum()是忽略null值的。唯一的例外是用count()
在myisam、innodb和memory引擎中,是可以在包含null值的列新增索引的,而在其它引擎中則必須宣告為not null才可以新增索引
當用load data infile時,空的或者沒有的列將用空字元''代替,如果要匯入null值,需要在資料檔案裡用\n來表示。
如果你往timestamp插入null值,則當前時間會被插入,如果乙個自增列插入null值,下乙個自增值將會被插入。
ifnull
函式是mysql控制流函式之一,它接受兩個引數,如果不是null
,則返回第乙個引數。 否則,ifnull
函式返回第二個引數。
兩個引數可以是文字值或表示式。
以下說明了ifnull
函式的語法:
ifnull(expression_1,expression_2);
如果expression_1
不為null
,則ifnull
函式返回expression_1
; 否則返回expression_2
的結果。
ifnull
函式根據使用的上下文返回字串或數字。
如果要返回基於true
或false
條件的值,而不是null
,則應使用if函式。
資料庫中 與null的區別
null不是物件,是物件 從 你就可以知道這是乙個字串型別的資料,是乙個長度為零的字串。從null,你只能知道這裡沒有賦過值,是空的,他不屬於任何資料型別。我們在資料庫實際使用中,一般把字串型變數預設為 數值型變數預設為0,這樣才能保正在進行邏輯運算時不產生型別不匹配的錯誤。sql server中函...
關於資料庫中的NULL
1 不能對null使用等號 2 不等對null相加 相乘 結果都是null 10倍的null仍舊是null 3 不要使用特殊標記 1 0 來代替null 4 null不是字串 null string 返回null 並不是string 5 not null 返回null 並不是true 6 null ...
Oracle資料庫中的 與NULL的關係
在oracle資料庫中 與null是等價的。均表示空值,而不是類似其他資料庫上 表示空串,null表示空值。oracle 允許任何一種資料型別的字段為空,除了以下兩種情況 1 主鍵字段 primary key 2 定義時已經加了not null限制條件的字段 說明 1 null等價於沒有任何值 是未...