代码改变世界

Mysql的NULL的一个注意点

2013-07-31 18:48  轩脉刃  阅读(483)  评论(0编辑  收藏  举报

今天看到一个问题:

select a.* from a where (a.id not in (NULL));

这个sql语句会返回什么?

刚开始以为是返回所有item,但是实际运行下返回是返回empty set。

看了下手册:

http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html

判断一个字段是否是NULL只能使用IS NULL或者IS NOT NULL来判断,不能使用比较符号(=,<,>, !=)来判断

任何数字和NULL进行比较符号结果是NULL

Image

为什么会这么设计呢?NULL是代表无定义的值(a missing unknown value),和一个无定义的值比较大小是没有意义的,也是“无法比较的”,或者说,比较结果是不定的(NULL)。

好吧~就这么理解了。