Oracle:SELECT,其中date较小,如果不等于null

时间:2013-08-22 13:01:08

标签: sql oracle

我有一个记录表,当记录处于活动状态时,一列保存该值。 大多数记录仍处于打开状态,因此end_date列中没有任何值。

我想选择所有仍处于活动状态的记录。实现这一目标的一种方法(从头到尾):

select *
from table t
where nvl(t.end_date, to_date('2099-DEC-31', 'MM-DD-yyyy')) > sysdate

但感觉不对。有没有更好的方法来实现我想要的目标?

编辑:顺便说一句,表格并不大,而且不会增长:)

1 个答案:

答案 0 :(得分:2)

select *
  from table t
 where nvl(t.end_date, to_date('2099-DEC-31', 'MM-DD-yyyy')) > sysdate

不会使用“普通”,非基于函数的索引,因此可能会影响性能。

您可以像

一样查询
select *
  from table t
 where t.end_date > sysdate OR t.end_date is null

代替