首先搜索第一个条件,仅在第二个条件不可用时搜索

时间:2015-03-17 09:56:49

标签: oracle

我正在编写一个SQL查询,其中查询应首先搜索第一个值,并且只有在缺少此值时,查询才应搜索第二个值。

我有两张桌子。其中一个表包含修改日期(这并不总是填充,可以是null)和一个始终填充的创建日期。

现在我想要的是查询首先在表中查看修改日期,并且只有null查看具有创建日期的表。

查询示例:

Select *
  from all_articles
  where to_char(modification_date, 'YYYYMMDD') = to_char(sysdate, 'YYYYMMDD')-1 
-- if this is an empty record then  
to_char(creation_date, 'YYYYMMDD') = to_char(sysdate, 'YYYYMMDD')-1

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

几乎所有主要的RDBMS'可用的内置函数来处理这种情况。 Oracle DB具有NVL功能,其工作方式如下: NVL(Modified_dt,Create_dt);

以上将默认返回Modified_dt列数据。但是,如果它不可用,它将返回Create_dt。

详情请见此处: http://www.w3schools.com/sql/sql_isnull.asp