原文地址 http://blog.csdn.net/adwfcu/article/details/3336484
lnnvl用于某个语句的where子句中的条件,如果条件为真就返回真,否则为假。
其含义可理解为LNNVL == IS NULL OR IS NOT TRUE
这样我们在下面的试验中使用的大于小于符号将会是返的,还要注意这个问题。
它的优势是可以处理简单条件判断无法实现的null条件
比如要查询一个学校的登记表中检索其毕业年份早于2010年的,并且包含那些还未填写年份而未null的记录。
create table testaaa(name varchar2(10),year number);
insert into testaaaa values('huangkp',2008);
insert into testaaaa values('wujw',2012 );
insert into testaaaa values('zhangle',null);
insert into testaaaa values('mxy',2007);
然后我们执行下面的代码
select * from testaaaa where lnnvl(year<2010) 意思就是找出year不小于2010的人员,返回的结果包括空值的。
结果为:
1 wujw 2012
2 zhangle
select * from testaaaa where lnnvl(year>2010) 意思就是找出year不大于2010的人员,返回的结果包括空值的。
结果为:
1 huangkp 2008
2 zhangle
3 mxy 2007
空值依然存在
select * from testaaaa where year>2010 找出year大于2010的人员,这个结果中就不包括空值了。
结果为
1 wujw 2012
这个函数经常出现在 Oracle 执行计划中,特别是 where 条件中有 or 的时候