mysql - 如何为 COALESCE 定义 null 或零?
问题描述
如您所知,COALESCE
返回第一个非null
值。现在我需要说,要么不 -null
要么不 - 0
。我怎样才能做到这一点?
这是我的代码:
SELECT COALESCE(qa2.AcceptedAnswer, qa.AcceptedAnswer) AcceptedAnswer
FROM qanda
解决方案
一种方法使用NULLIF()
:
SELECT COALESCE(NULLIF(qa2.AcceptedAnswer, 0), qa.AcceptedAnswer) as AcceptedAnswer
FROM qanda;
就个人而言,我更喜欢CASE
表达,因为我发现意图更明确:
select (case when qa2.AcceptedAnswer <> 0 then qa2.AcceptedAnswer
else qa.AcceptedAnswer
end) as AcceptedAnswer
请注意,NULL
不需要显式比较;的<>
照顾。