遇到查询问题, 写SQL当where status =! 'Y'时,
期望结果是: 查询出status不为 'Y' (包含null)的数据。
然而现实是: 查询出status不为 'Y', 和不为 'null' 的数据。
有例表:emp
emp_no name age status
001 Tom 17 Y
002 Sun 14 N
003 Tom 15
004 Tom 12 N
--All date
select * from emp;
-- != 'Y' 不包含null (emp_no = 002, 004)
select * from emp where status != 'Y';
-- != 'Y' 包含null (emp_no = 002, 003, 004)
select * from emp where status != 'Y' or status is null;
//事实上,并不仅仅“不等于号”与Null的关系是如此的,其他操作符也类似,只不过“不等于号”使用场景的特殊性让我们容易发觉此特性。
//其中原因在于Null,关于Null的各种情况说明可见以下Oracle的文档:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements005.htm
http://www.cnblogs.com/nick-huang/p/3921605.html