我正在嘗試做一些應該相當簡單的事情,但ISNULL並沒有做我認爲會的事情。ISNULL與NULL數據庫字段的用法
基本上我有一個存儲過程,我期待PARAM1或PARAM2在我的表中有一個匹配的值。
SELECT * FROM MyTable WITH (NOLOCK)
WHERE
field1 = ISNULL(@PARAM1 ,field1)
AND
field2 = @PARAM2
這工作正常,直到我有我的行中的NULL字段,然後它排除這些結果。有不同的方法可以滿足這個需求嗎?
不可以.OP傳入'@ PARAM1'或'@ PARAM2',他們希望參數NULL是有效的No-OP。除非PARAM1 =''的行爲不會排除列爲NULL的行。 – 2011-05-12 15:07:54
參數1或2可以爲空。我只傳入了我感興趣的參數,另一個設置爲NULL – Andrew 2011-05-12 15:08:11
Martin,這就是我所說的。如果列值爲NULL(如他所說,「直到我的行中有NULL字段」),@ PARAM1(不會爲NULL)將不匹配它。所以他需要使用列值的ISNULL,或者檢查Param1是否爲NULL。 – Ryan 2011-05-12 15:15:16