查询此CASE表达式中是否需要IS NULL?

时间:2013-08-15 10:00:50

标签: sql sql-server sql-server-2012

我有这个案例陈述:

CASE 
  WHEN SecondScriptKind_ID IS NULL THEN 0
  WHEN SecondScriptKind_ID IN (@SqlQuery, @SqlScript) THEN 1
  ELSE 0 
END

在这种情况下,WHEN SecondScriptKind_ID IS NULL是否必要?

@SqlQuery和@SqlScript都保证包含值(NOT NULL)。

1 个答案:

答案 0 :(得分:3)

设置ANSI_NULLS on时,没有必要:即使@SqlQuery@SqlScript恰好是NULLIN也是如此不会将NULL SecondScriptKind_ID与该列表匹配。换句话说,条件

NULL IN (NULL, 123)

评估为NULL。保持明确NULL检查的唯一原因是,如果您想为NULL返回一个不同的数字,例如,为负数1。