NULL是一种“没有类型”的值,一般表示“无值”,“未知值”,“缺失值”,“超界”,“不在其中”等,咱们在平常运用中很容易和NULL字符串混淆,这里大体整理了下NULL值的一些特性,以便可以正确使用NULL值。mysql
1,建立表时字段时若未添加默认值,则默认为NULL值sql
2,NULL值和NULL字符串的区别函数
1)NULL值不区分大小写,查询时都显示为大写NULL,而NULL字符串则显示为插入时候的大小写,查询的时候根据字符集是否区分大小写筛选,或者经过语句级的collate或binary指定是否区分大小写。spa
2)NULL字符串能够看成普通字符串进行处理,而NULL值的判断只有is null和 is not null,见第5点3d
3,插入数据时若不指定值,若是没其它默认值,会用默认值NULLblog
4,当插入大写NULL字符时,就很难区别NULL是NULL值仍是NULL字符串了,这时须要用到NULL值的判断,NULL值的判断只有is NULL和is not NULL字符串
经过肉眼很难区别,这里经过NULL值的判断,能够看到id2为NULL值的只有3行,非NULL值的有7行,而为NULL字符串的有4行im
5,SQL里面对NULL值的处理函数有isnull(expr)(返回is NULL的逻辑判断结果)和ifnull(expr1,expr2)(若是expr1 is null则返回expr2,不然返回expr1)d3
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,如: