今天看到一个问题:
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
为什么会这么设计呢?NULL是代表无定义的值(a missing unknown value),和一个无定义的值比较大小是没有意义的,也是“无法比较的”,或者说,比较结果是不定的(NULL)。
好吧~就这么理解了。