繁体   English   中英

仅对不为null的列的case语句

[英]case statement only on column that is not null

我正在写一个查询,根据其生日和当前日期搜索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

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

除了使用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语句返回表达式。

尝试这个:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM