空场上的标准

Ano*_*C I 2 sql postgresql date postgresql-9.3

考虑我有一个表格计划,其中包含以下值.

planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp)
---------------------------------------------------------------
planA              |         20-10-2013   |
Run Code Online (Sandbox Code Playgroud)

我应该使用'validTo'字段上的where条件编写什么选择查询,以便即使'validTo'中的值为空也可以获取该行

例如,如果我写的查询如下: -

select * 
from plan 
where validFrom > to_Date('20-10-2013', 'DD-MM,YYYY') 
  and validTo < to_Date('31-12-2029', 'DD-MM,YYYY')
Run Code Online (Sandbox Code Playgroud)

并获得结果

planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp)
---------------------------------------------------------------
                   |                      |
Run Code Online (Sandbox Code Playgroud)

但我也需要获取该行.

Ano*_*C I 5

谢谢我得到的每一个方法,希望这也会支持其他人.

select * from plan where COALESCE(validFrom , to_date('12/10/2799', 'DD/MM/YYYY')) > to_Date('20/10/2013', 'DD/MM/YYYY') AND COALESCE(validFrom , to_date('1/01/1700', 'DD/MM/YYYY'))< to_Date('31/12/2029', 'DD/MM/YYYY'); 
Run Code Online (Sandbox Code Playgroud)

如果值为null,则COALESCE()将与下一个非空值进行比较.

COALESCE是NVL的替代方法.