sql - Where Criteria on 空场

标签 sql postgresql date postgresql-9.3

假设我有一个具有以下值的表 Plan。

planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp)
---------------------------------------------------------------
planA              |         20-10-2013   |

我应该在“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')

并获得类似的结果

planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp)
---------------------------------------------------------------
                   |                      |

但我还需要获取该行。

最佳答案

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

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'); 

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

COALESCE 是 NVL 的另一种方法。

关于sql - Where Criteria on 空场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40016757/

相关文章:

bash - Heroku - 将控制台输出重定向到 Logentries

xml - 在 PostgreSQL 中提取 xml 标签的值

postgresql - 有什么办法可以判断行是否已经更新 postgres :golang

sql - 在访问中选择不同?语法错误

mysql - 查找重复值

java - 将日期字符串与时区进行比较

swift - 如何找到存储数据的最近日期

php - 获取pdf中带有日期的姓名数量

mysql - 3个表之间的SQL多重测试

mysql - 有没有办法在 MySQL 中执行 INSERT 或 SELECT?