MySQL NULL值特性
NULL是一種“沒有型別”的值,通常表示“無值”,“未知值”,“缺失值”,“超界”,“不在其中”等,我們在日常運用中很容易和NULL字串混淆,這裡大致整理了下NULL值的一些特性,以便能夠正確使用NULL值。
1,建立表時欄位時若未新增預設值,則預設為NULL值
2,NULL值和NULL字串的區別
1)NULL值不區分大小寫,查詢時都顯示為大寫NULL,而NULL字串則顯示為插入時候的大小寫,查詢的時候根據字符集是否區分大小寫篩選,或者通過語句級的collate或binary指定是否區分大小寫。
2)NULL字串可以當作普通字串進行處理,而NULL值的判斷只有is null和 is not null,見第5點
3,插入資料時若不指定值,如果沒其它預設值,會用預設值NULL
4,當插入大寫NULL字元時,就很難區別NULL是NULL值還是NULL字串了,這時需要用到NULL值的判斷,NULL值的判斷只有is NULL和is not NULL
通過肉眼很難區別,這裡通過NULL值的判斷,可以看到id2為NULL值的只有3行,非NULL值的有7行,而為NULL字串的有4行
5,SQL裡面對NULL值的處理函式有isnull(expr)(返回is NULL的邏輯判斷結果)和ifnull(expr1,expr2)(如果expr1 is null則返回expr2,否則返回expr1)
6,和NULL值的比較運算和算術運算,結果仍為NULL值,但是<=>運算子時,NULL<=>NULL為真
7,和NULL值的邏輯運算,is NULL運算只有null is null為真返回數字1,is not NULL運算只有 null is not null為假返回數字0
8,mysql會把單獨的\N(區分大小寫)當作NULL值
9,NULL值和空字元’’不一樣,查詢欄位為空字元時,可以用等號,不考慮長度,都顯示為空,但是長度不一樣
10,空字元和其他字元做算術運算時當作0處理,但是當做分母時運算結果為NULL
11,NULL值會被count(欄位)函式過濾,但是在count(*)中不會被過濾
12,在group by函式中NULL會當作同一個值放在最最小值前
13,其他一些函式中如果有NULL值,返回結果為NULL,如: