Chinaunix首页 | 论坛 | 博客
  • 博客访问: 466829
  • 博文数量: 65
  • 博客积分: 2645
  • 博客等级: 少校
  • 技术积分: 675
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-08 17:04
文章分类

全部博文(65)

文章存档

2010年(5)

2009年(5)

2008年(14)

2007年(35)

2006年(6)

分类: Oracle

2007-10-18 13:34:52

在 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)






阅读(1209) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~