空值问题(NULL)
2018-03-30 本文已影响2人
轻云之闭月
not in中null的问题
如果使用not in, 其后的条件中不能有空值,不然结果可能出错
select 'a' NOT IN ('c', 'b', NULL);
+-----------------------------+
| 'a' NOT IN ('c', 'b', NULL) |
+-----------------------------+
| NULL |
+-----------------------------+
1 row in set (0.00 sec)
结果是null,而不是0
当出现空值时,not in的结果可能为null,并不是预想的结果
另外:
in 的结果不受NULL值影响
select 'a' IN ('c', 'b', 'NULL', 'a');
+---------------------------------+
| 'a' IN ('c', 'b', 'NULL', 'a') |
+---------------------------------+
| 1 |
+---------------------------------+
1 row in set (0.00 sec)
空值处理
- ifnull 函数
将空值替换为指定值
select name, ifnull(avg(grade), 0) from student group by name;