我在這裏擊敗我的頭......無法找到一種方法來解決這個問題。在存儲過程中使用一位輸入來確定如何篩選where子句中的結果
這裏是我的設置:
我的表有日期的東西已經完成的一列。如果從未完成,則該字段爲空。夠簡單。
在前端,我有一個複選框,默認爲「僅顯示不完整的條目」。只提取不完整的條目時,很容易。
SELECT
*
FROM Sometable
WHERE Completed_Date IS NULL
但提供複選框選項使事情變得非常複雜。我的複選框輸入一個位值:1 =只顯示不完整,0 =全部顯示。
問題是,我不能在where子句中使用CASE語句,因爲實際值使用「=」進行比較,並且檢查null使用「IS」。例如:
SELECT
*
FROM Sometable
WHERE Completed_Date IS <---- invalid syntax
CASE WHEN
...
END
SELECT
*
FROM Sometable
WHERE Completed_Date =
CASE WHEN @OnlyIncomplete = 1 THEN
NULL <----- this translates to "WHERE Completed_Date = NULL", which won't work.. I have to use "IS NULL"
...
END
任何想法如何完成這個看起來很容易的任務?我很難過...謝謝。
簡單而優雅的解決方案。比我預期的要容易得多。非常感謝。 – user1003916