sql关键字之null

在数据库中使用一种特殊的值表示未知的值--NULL,我们称之为空值但并不是空的字符串,而是特殊的值。

 

执行:

select * from EMP where EMPID in(2,3,null);

结果:

        

执行:select * from EMP where EMPID not in(2,3,null);

结果:no rows selected;

 

开始我以为应该返回EMPID的数据,然而并不是。

 

select * from EMP where EMPID not in(2,3,null);

等价:select * from EMP where EMPID not (empid=2 or empid=2 or empid=null);

等价:select * from EMP where EMPID not (false or false or empid=null);

等价:select * from EMP where EMPID not null;

 

PS:FALSE OR NULL=NULL ,而TRUE OR NULL=TRUE

1SET ANSI_NULLS 被设置为 ON

也不会返回任何结果集

2SET ANSI_NULLS 被设置为 off

返回不为null 的数据

 

推出结论:在where条件返回false或null的时候不成立

 注:当值列表包含空值时,not exists 返回true,而not in 则返回false;

posted @ 2015-07-25 10:40  GKL2013  阅读(405)  评论(0)    收藏  举报
NEW BLOG TOP