是什么导致CASE WHEN X为NULL时没有捕捉到NULL值,而ISNULL()捕捉到了

  • 本文关键字:NULL ISNULL CASE WHEN 是什么 sql
  • 更新时间 :
  • 英文 :


我有一个CASE语句,我正在处理它。大多数值都是正确的。如果值为null,则会替换该值,但很少有几个值没有被捕获,但是如果我使用ISNULL(x,'y'(,则其他值不会被捕获,但以前没有捕获的值会被捕获。这个案子很长,所以我把它浓缩在这里。

捕获最多的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值,当然这似乎是不可能的。谢谢你的意见。

将这两种方法结合起来,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

最新更新