是什么会导致CASE X X NULL不能捕获NULL值,而ISNULL()可以捕获

时间:2018-12-03 19:37:30

标签: sql

我有一个CASE声明,我正在为此而苦苦挣扎。大多数值都正确传递。如果该值为null则替换该值,但是很少捕获到该值,但是如果我使用ISNULL(x,'y'),则不会捕获其他值,但是之前未捕获到的值是。 CASE很长,所以我在这里将其压缩。

捕获大多数NULL值:

 CASE 
     WHEN a.LANGUAGE2 = 'ABC' THEN '0170'
     WHEN a.LANGUAGE2 = 'BCD' THEN '0440'
     WHEN a.LANGUAGE2 IS NULL THEN
        CASE
            WHEN b.LANGUAGE1 = 'ABC' THEN '0170'
            WHEN b.LANGUAGE1 = 'BCD' THEN '0440'
        END
 END

抓住其他人

ISNULL(a.LANGUAGE2,b.LANGUAGE1)

几乎有两种NULL值,这当然是不可能的。谢谢您的任何想法。

1 个答案:

答案 0 :(得分:1)

结合这两种方法,case语句变为

CASE 
     WHEN ISNULL(a.LANGUAGE2,b.LANGUAGE1) = 'ABC' THEN '0170'
     WHEN ISNULL(a.LANGUAGE2,b.LANGUAGE1) = 'BCD' THEN '0440'
     ELSE "WHAT DO YOU WANT IF LANGUAGE1 IS ALSO NULL"
END