“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第一篇文章,点击查看活动详情”
前言:一直以为=null 是可以查询出所查字段为null的字段,但实际上,=null查出来的数据为空,查询null的记录需要使用is null,查询数据证明如下:
表数据:
sql查询:
=null查询
is null
原因
sql逻辑表达式可能存在三种值:true,false,unkonwn
第三种值unkonwn 被译为:不知道的值或者不存在的值,一般情况下,在where和having中,unknown等同于false,故=null时表达式为false,未被查询出来
注意情况
在修饰符使用时,往往会会将=null转换为false,有几种情况除外
1、使用 时ORDER BY, NULL首先显示值,如果您指定DESC按降序排序,则最后显示值。
2、使用DISTINCT、GROUP BY或ORDER BY时,所有 NULL值都被视为相等。
聚合函数下,一般情况下会忽略null值,如 COUNT()、 MIN()和 SUM()忽略 NULL值。例外是 COUNT(*),它计算行而不是单个列值。
使用null值
在 MySQL 中,0orNULL 表示 false,其他任何表示 true。布尔运算的默认真值是1
参考链接:dev.mysql.com/doc/refman/…
在count函数使用中会忽略null值
在box中,根据count(box.Id)查询结果可以得知总数据有17条,但Modifier中存在null值,故查询出来的总数为4条,忽略了null值
在int类型中无法插入null值
虽然null值为
不知道的值或不存在的值 ,但是具有意义,且占据物理空间
但是当sortno先定义的类型为varchar,再改为int,会存在null值,具体原因未明,望知情人告知
min()、max()中会忽略null值
目前无法验证,但是mysql官方原文为聚合函数下,一般情况下会忽略null值,如 COUNT()、 MIN()和 SUM()忽略 NULL值。例外是 COUNT(*),它计算行而不是单个列值。
注:第一次在掘金写文,如有错误之处还请各位大佬指点