我在WHERE子句中有CASE語句的問題。在我的查詢中,我想獲取日期前的行。日期檢查3列。 date1
是不是NULL,所以我不需要有空檢查,但日期date2
和date3
可以是NULL,所以我想檢查空值,並相應地檢查日期條件。我嘗試了兩種方法,但無法弄清楚如何正確執行。你能幫我嗎?與CASE和NULL檢查的地方
查詢1:
SELECT *
FROM
docs
WHERE
date1 < '20120601'
AND CASE
WHEN date2 IS NOT NULL AND date3 IS NOT NULL THEN date2 < '20120601'
WHEN date2 IS NOT NULL AND date3 IS NULL THEN date2 < '20120601'
WHEN date2 IS NULL AND date3 IS NOT NULL THEN date3 < '20120601'
END
這給錯誤時,第一個:Incorrect syntax near '<'.
我修改我的查詢到這一點:
SELECT *
FROM
docs
WHERE
date1 < '20120601'
AND CASE
WHEN date2 IS NOT NULL AND date3 IS NOT NULL AND date2 < '20120601' THEN TRUE
WHEN date2 IS NOT NULL AND date3 IS NULL AND date2 < '20120601' THEN TRUE
WHEN date2 IS NULL AND date3 IS NOT NULL AND date3 < '20120601' THEN TRUE
END
,並得到了另一個錯誤:An expression of non-boolean type specified in a context where a condition is expected, near 'END'.
感謝完蛋了。也許不是我想要的100%,但是由於這個,我在我的商業邏輯中發現了一個錯誤。現在everthik工作。謝謝。 –