在 Oracle中执行下列语句:
select 'asdf' from dual where 1 >= null or 1 < null or 1 <> null;
查不到结果. 也就是说 null 无法比较大小.
在程序中有时会写:
select *
from xxx a
where a.endtime = (select max(b.endtime) from xxx b where b.zz = a.zz)
如果 endtime 有为null 的, 则取不到正确的数据.
上面的sql需改成:
select *
from xxx a
where nvl(a.endtime, to_date('2199', 'yyyy'))
= (select max(nvl(b.endtime, to_date('2199', 'yyyy')))
from xxx b where b.zz = a.zz)
阅读(1237) | 评论(0) | 转发(0) |