在oracle中 如果在where条件中有 null = null 的结果也是false的。
例子表:
select * from EMP
执行结果 一共16条
select * from EMP
WHERE ENAME = ENAME AND JOB = JOB
执行结果:因为JOB = JOB 有一个是null 条件为false 所以只有15条记录了。
为了避免 字段1=字段1 这种场景:
@JOB 为变量
当@JOB为'全部' 时筛选全部的数据。当为其他值时根据条件筛选
select * from EMP
WHERE (@JOB = '全部' OR JOB = @JOB)