كيف يمكنني تحديد صفر أو صفر لـ COALESCE؟

-1

وانت عارف، COALESCE إرجاع أول لا- null القيمة. الآن أريد أن أقول ، إما لا- null أم لا- 0 . كيف أقوم بذلك؟

ها هو الكود الخاص بي:

SELECT COALESCE(qa2.AcceptedAnswer, qa.AcceptedAnswer) AcceptedAnswer
FROM qanda

2 الاجابة

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

sqlfiddle

:مؤلف
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 لا حاجة للمقارنة ؛ ال <> يعتني بذلك.

:مؤلف
فوق
قائمة طعام