2017-07-28 88 views
2

我需要有關條件的幫助以查詢我的問題。需要將條件設置爲空CASE

我希望它是這樣工作的:

WHERE 
    [Column] = CASE 
        WHEN @Variable1 IN (1,2) 
        THEN NULL 
        ELSE @Variable2 
       END 

但它不會工作,因爲[Column] = NULL對我們的工作服務器,SQL Server 2012的

任何想法是不工作?

+0

不工作是指?什麼問題?你檢查了數據嗎? –

+0

如果我使用[Column]是NULL,那麼我找到了我要查找的數據,但是如果我使用[Column] = NULL,那麼querry不會返回任何內容 – DavidWaldo

+1

嘗試在[1,2]中嘗試'[Column]或[Column] = @ Variable2' – fen1x

回答

1

試試這個:

WHERE ISNULL([Column],1) = CASE 
       WHEN @Variable1 IN (1,2) THEN 1 
       ELSE @Variable2 
      END 

附:將值1更改爲對[Column]無效的任何值。

+0

就像一個魅力!謝謝 – DavidWaldo

+0

當插入_magic number_永遠不會發生(在兩個地方)添加註釋來記錄它在那裏做什麼。關於'COALESCE'和'ISNULL'的好消息是在SQL Server Pro [這裏](http://sqlmag.com/t-sql/coalesce-vs-isnull)和MSDN Blogs [here](http:// blogs。 msdn.com/b/sqltips/archive/2008/06/26/differences-between-isnull-and-coalesce.aspx)。 – HABO

0

使用比較運算符(例如=,<或<>)無法測試NULL值。

您必須使用IS NULL或IS NOT NULL運算符。 重寫你的條件:

WHERE ([Column] IS NULL AND @Variable1 IN (1,2) 
    OR [Column] = @Variable2) 
    AND ...other conditions... 
+0

這不會返回我想要的... IF Variable1是1或2然後我想要查找其中列爲空的條目,如果Variable1是某些否則我想查找條目where column = Variable2 – DavidWaldo

+0

在WHERE子句中是否還有其他條件?你能發佈數據樣本和預期的輸出嗎? – fen1x

+0

是的,它有點像WHERE COLUMN 2 = Variable3 – DavidWaldo

0
WHERE CASE 
    WHEN @Variable1 IN (1,2) AND [Column] IS NULL THEN 1 
    WHEN [Column] = @Variable2 THEN 1 
    ELSE 0 END = 1 
+0

這張海報會從一些*解釋*中得到很大的好處,說明爲什麼和如何執行他/她所要求的。 – joanolo

相關問題