使用Where = Null,是否有空替代?

Con*_*eak 0 t-sql sql-server

如果没有,是否有另一种方法可以使用CASE或IF/THEN标识符切换SELECT语句而不将语句首先放入标量变量?

有没有办法在不使用IS并使用=符号来设置它的情况下进行格式化?

    SELECT ID FROM TABLE WHERE ID = Null
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 5

不,NULL不是值.将NULL视为条件,使用IS NULLIS NOT NULL正在测试此条件.

在此示例中,您可以测试实际值,或者缺少条件所代表的值

WHERE
   (X IS NULL OR X = @X)
Run Code Online (Sandbox Code Playgroud)

要么

WHERE
  (@X IS NULL OR X = @X)
Run Code Online (Sandbox Code Playgroud)

或者首先测试你的确定条件:

WHERE
    CASE X
      WHEN 1 THEN
      WHEN 2 THEN
      ELSE --  includes NULL
   END = ...
Run Code Online (Sandbox Code Playgroud)

你的问题是抽象的,很难给出更准确的答案.

例如,你有NOT IN和NULL的问题吗?如果是这样,请使用NOT EXISTS.