如何用COALESCE跳过特定值'1900-01-01'实现日期选择?
最优SQL写法实现需求
可以利用NULLIF函数配合COALESCE来实现,完全不需要CASE WHEN:
COALESCE(date1, NULLIF(date2, '1900-01-01'), date3)
逻辑说明
NULLIF(date2, '1900-01-01')会判断date2是否等于'1900-01-01':如果是,返回NULL;否则返回date2本身。- 外层的
COALESCE会按顺序取值:优先取date1,若date1为NULL,则取NULLIF处理后的date2值——如果原date2是无效的'1900-01-01',这里会变成NULL,COALESCE就会自动跳过,转而取date3;如果原date2是有效日期,就直接使用该值。
内容的提问来源于stack exchange,提问作者Yoav24
相关产品推荐
相关产品推荐

