Sql语句采坑之NULL值
1、is null 和 = null 的区别
在进行写sql语句判断字段为空的时候一开始的使用=null,发现判断未能执行。
期望判断其走向1这种情况,但是实际判断却走向了2的情况,而且没有报错。
经过查阅资料,当换成IS NULL时走向了期望的情况。
解释如下:
NULL表示什么也不是,不能用算数运算符(> = < …),应该使用逻辑运算符(IS ,IS NOT ),如果用=、>、< … 所有的判断,结果都是false。可以把 NULL 理解为 UNKNOWN。
主要意思是'不知道',就是它可能是任何值;另外一层意思是'信息缺失',比如某个存储姓名信息的字段值是 NULL,代表姓名信息缺失。所以 NULL 值不是任意一个确定的值!NULL 不是 '' 也不是 0(从下图可知,未选定正确行)。空值是不占用存储空间的,null占用存储空间
2、NULL和''以及0不一样
结论:
1)默认情况下推荐使用IS NULL 作条件判断,因为sql默认情况下对WHERE XX = NULL的判断永远返回0行,不提示语法错误。同理NULL和NULL也不一样。
2)NULL 和 ‘’ 和 0 的区别
解释:空值('')的长度是0,是不占用空间的;而的NULL长度是NULL,其实它是占用空间的。
3、NULL不参与计数,看这边数据不止1000多条,但是存在大量的NULL值,计数却只有700多条
解释:COUNT()统计某列的记录数的时候,如果采用的NULL值,会被系统自动忽略掉