如何忽略第一个日期中的空值



我有这个表:

dates   var1    var2
2004    null    null
2005    null    null
2006    null    null
2007    null    null
2008    25      null
2009    30      null
2010    50       30
2011    60       50
2012    null     70
2013    null     80
2014    null     90

我需要一个查询以下结果:

dates   var1    var2
2008    25      null
2009    30      null
2010    50       30
2011    60       50
2012    null     70
2013    null     80
2014    null     90

我尝试过:

select * from table where var1 is not null 

但是有必要保留后续的null。

如果您已经声明要选择不是var1var2都是null的所有行,或者换句话说,这两个行中的任何一个都不是null,那么情况会更清楚。然后它就像一样简单

select * from table where var1 is not null or var2 is not null

您只需使用:

select * from table where nvl(var1,var2) is not null

逻辑似乎是,对于返回集,这两列不应该同时为null。这意味着考虑两列同时为null的情况(var1 is null and var2 is null(,并取其补集(not(。因此,您需要:

select *
from tab
where not (var1 is null and var2 is null)

或者通过addition:考虑Oracle的CCD_

select *
from tab
where nvl2(var1,1,0) + nvl2(var2,1,0) > 0 

其中,对于null值返回0,对于作为加法分量的nvl2()函数中声明的每列值的non-null值返回1

演示

相关内容

  • 没有找到相关文章

最新更新