我需要有關條件的幫助以查詢我的問題。需要將條件設置爲空CASE
我希望它是這樣工作的:
WHERE
[Column] = CASE
WHEN @Variable1 IN (1,2)
THEN NULL
ELSE @Variable2
END
但它不會工作,因爲[Column] = NULL
對我們的工作服務器,SQL Server 2012的
任何想法是不工作?
我需要有關條件的幫助以查詢我的問題。需要將條件設置爲空CASE
我希望它是這樣工作的:
WHERE
[Column] = CASE
WHEN @Variable1 IN (1,2)
THEN NULL
ELSE @Variable2
END
但它不會工作,因爲[Column] = NULL
對我們的工作服務器,SQL Server 2012的
任何想法是不工作?
試試這個:
WHERE ISNULL([Column],1) = CASE
WHEN @Variable1 IN (1,2) THEN 1
ELSE @Variable2
END
附:將值1
更改爲對[Column]
無效的任何值。
就像一個魅力!謝謝 – DavidWaldo
當插入_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
使用比較運算符(例如=,<或<>)無法測試NULL值。
您必須使用IS NULL或IS NOT NULL運算符。 重寫你的條件:
WHERE ([Column] IS NULL AND @Variable1 IN (1,2)
OR [Column] = @Variable2)
AND ...other conditions...
這不會返回我想要的... IF Variable1是1或2然後我想要查找其中列爲空的條目,如果Variable1是某些否則我想查找條目where column = Variable2 – DavidWaldo
在WHERE子句中是否還有其他條件?你能發佈數據樣本和預期的輸出嗎? – fen1x
是的,它有點像WHERE COLUMN 2 = Variable3 – DavidWaldo
WHERE CASE
WHEN @Variable1 IN (1,2) AND [Column] IS NULL THEN 1
WHEN [Column] = @Variable2 THEN 1
ELSE 0 END = 1
這張海報會從一些*解釋*中得到很大的好處,說明爲什麼和如何執行他/她所要求的。 – joanolo
不工作是指?什麼問題?你檢查了數據嗎? –
如果我使用[Column]是NULL,那麼我找到了我要查找的數據,但是如果我使用[Column] = NULL,那麼querry不會返回任何內容 – DavidWaldo
嘗試在[1,2]中嘗試'[Column]或[Column] = @ Variable2' – fen1x