四时宝库

程序员的知识宝库

解决Mysql最容易犯错的地方

当mysql中的表的列存在空值NULL时,你会发现很多结果不符合你的期望,这里面的null值甚至导致你查询不到正常的值的记录。

比如有个表 ta,它有个列为a,a的值存在null、0,1、2、3等,表结构如下图:



你想查询a的值不为3的记录,使用下面的sql

SELECT * FROM ta WHERE a NOT IN (3);



你会发现,空值的记录查询不出,理论上a的值为 null、1、2的记录都要出来,但是你发现只返回了a的值为 1、2的记录,null的值根本查询不出,这不符合我的需求,我的需求是查询a不等于3的所有情况的值都返回。

这种情况如何解决呢?

这里就要用到COALESCE函数了,使用这个函数将a的空值转换为一个常量,比如-1也可以的,sql改造为:

SELECT * FROM ta WHERE COALESCE(a, 0) NOT IN (3);


#春日生活打卡季##mysql#

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接