[英]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.