0

我正在编写一个查询,根据生日和当前日期搜索 18 岁以上的人。在某些情况下,一个人在数据库中没有出生日期。对于这些人,我只想将他们包含在我的查询中,而不是对他们执行 where 子句。这可能吗?这是一个 db2 数据库

 select *
   from people i
where case when coalesce(i.birth_date,'') != '' then (i.birth_date < (SELECT CURRENT_DATE - 18 years from datetoday)) else '' end

上面的查询是我尝试过的,但抛出了一个错误,我不确定它是否是正确的格式。或者,如果我想做的事情是可能的。

4

2 回答 2

0

尝试这个:

select *
from people i
where i.birth_date IS NULL OR i.birth_date < (SELECT CURRENT_DATE - 18 years from datetoday)

您可以检查birth_date 是否为空或是否超过 18 岁。

于 2013-09-26T20:18:48.053 回答
0

而不是CASE仅仅使用OR

select *
from people i
where (coalesce(i.birth_date) != '' AND (i.birth_date < (SELECT CURRENT_DATE - 18 years from datetoday)))
  OR  coalesce(i.birth_date) = ''

您不能使用CASE语句返回表达式。

于 2013-09-26T20:12:16.200 回答