我正在编写一个查询,根据他们的出生日期和当前日期搜索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
以上查询是我尝试但是抛出错误我不确定它是否是正确的格式。或者,如果我想做的事情是可能的。
答案 0 :(得分: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
语句的表达式。
答案 1 :(得分: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。