我有一个记录表,当记录处于活动状态时,一列保存该值。
大多数记录仍处于打开状态,因此end_date
列中没有任何值。
我想选择所有仍处于活动状态的记录。实现这一目标的一种方法(从头到尾):
select *
from table t
where nvl(t.end_date, to_date('2099-DEC-31', 'MM-DD-yyyy')) > sysdate
但感觉不对。有没有更好的方法来实现我想要的目标?
编辑:顺便说一句,表格并不大,而且不会增长:)
答案 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
代替