共计 949 个字符,预计需要花费 3 分钟才能阅读完成。
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,如:
: