空值问题(NULL)

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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,978评论 0 38
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 10,083评论 0 23
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • 其实从未如此认真的看过这样的一本书。印象中的言情小说向来是无病呻吟过分矫情而已。可张爱玲的这本《半生缘》完全颠覆了...
    e991f96e8f58阅读 229评论 0 0
  • 韶光就像一个美少女,在低眉浅笑中,就将有些人一些事隔到了年月的对面。本来年月从不曾厚过谁也不曾薄过谁,日子即是一种...
    mikasi35阅读 1,207评论 0 1