SQL选择 - 向不在的内容添加NULL

时间:2014-08-15 11:10:58

标签: sql sql-server

下午好,

我在查询中有一个when子句,用于检查某个对象是否列在有效位置,如果它不是if子句的下一部分设置的值为"不可用& #34;

when (LocationId not In (8,4,18) or LocationId IS not null)
            then 'Not Available'
            else (more case when clauses to determine availability)

是我使用的,直到我意识到虽然我只能从8,4和18位获得我的可用结果。我希望Null位置落入检查的后续步骤。

我如何才能最好地将Null添加到not in?我意识到拥有(in(8,4,18)或null)似乎更容易并且切换我的then和else值。唯一的问题是我有大约8个其他嵌套的案例,在此之后检查其他的东西,它让我哭着想重新安排树。

1 个答案:

答案 0 :(得分:1)

在IN列表中永远找不到NULL(因为它的值为"未知")。因此,只需删除or LocationId IS not null即可解决问题:

when (LocationId not In (8,4,18))
then 'Not Available'
else (more case when clauses to determine availability)

换句话说:与when (LocationId In (8,4,18) or LocationId IS null)相反的是when (LocationId not In (8,4,18) and LocationId IS not null),与when (LocationId not In (8,4,18))相同。