您知道,COALESCE
返回第一个非-null
值。现在我要说的不是-null
还是不是0
。我该怎么办?
这是我的代码:
SELECT COALESCE(qa2.AcceptedAnswer, qa.AcceptedAnswer) AcceptedAnswer
FROM qanda
答案 0 :(得分:0)
一种方法使用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
比较; <>
会解决这个问题。
答案 1 :(得分:0)
您可以在CASE WHEN
函数中编写一个COALESCE
。
SELECT COALESCE(CASE WHEN qa2.AcceptedAnswer<> 0 THEN qa2.AcceptedAnswer END
,CASE WHEN qa.AcceptedAnswer <> 0 THEN qa.AcceptedAnswer END)
FROM T