在数据库中使用一种特殊的值表示未知的值--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
1、SET ANSI_NULLS 被设置为 ON
也不会返回任何结果集
2、SET ANSI_NULLS 被设置为 off
返回不为null 的数据
推出结论:在where条件返回false或null的时候不成立
时间: 2024-11-07 12:56:24