如何仅在列不为null时才向查询添加和条件?

时间:2015-12-11 09:02:57

标签: sql database oracle

我有以下查询,当t2.date不为空时给出正确的输出

select t1.name,t1.work,t2.type from t1,t2 where t.name=t2.name and t1.postdate < t2.date

但是当t2.date为null时,查询不会获取任何行。所以我只想在t2.date不为空时添加t1.postdate < t2.date条件。

当t2.date为null时我不想将它添加到查询中(我想要输出,因为上面的查询给出了没有和条件)

select t1.name,t1.work,t2.type from t1,t2 where t.name=t2.name 

请帮我解决这个问题。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

我同意@jarlh,你可以使用它;

select t1.name,t1.work,t2.type from t1,t2 where t.name=t2.name and (t2.date is null or t1.postdate < t2.date)

答案 1 :(得分:0)

为什么不让NVL更清晰,更短?

select t1.name
      ,t1.work
      ,t2.type 
  from t1 
      ,t2 
 where t.name = t2.name 
   and t1.postdate < nvl(t2.date, t1.postdate + 1);