2013-03-05 164 views
0

我希望在滿足一個案例的情況下對行進行更多條件的評估。如何使用Sqlite CASE WHEN添加更多條件?

這就是我想出了:

SELECT ... FROM ... 
WHERE Events.CALENDAR_ID + "=? 
AND case when " + Events.DTEND + ">0 
then " + Events.DTSTART + ">? end"; 

不過,這一說法忽略不符合的情況下排。

SELECT ... FROM ... 
WHERE Events.CALENDAR_ID + "=? 
case when " + Events.DTEND + ">0 
then AND " + Events.DTSTART + ">? end"; 

然後我想出了這個,但Sqlite告訴我,這只是壞的語法。

什麼是正確的語法?

回答

0

正確的語法是:

SELECT ... FROM ... 
WHERE "case when " + Events.DTEND + ">0 " + 
" then " + Events.CALENDAR_ID + "=? AND " + Events.DTSTART + ">? " + 
" else " + Events.CALENDAR_ID + "=? end" 
+0

這在語法上是正確的,但可能計算錯誤的值。你的表達的*含義是什麼? – 2013-03-05 15:39:26

+0

我想用額外的WHERE子句「Events.DTSTART>?」來評估該行。如果它滿足CASE「Events.DTEND> 0」。我的聲明是否意味着? – 2013-03-05 20:36:04

+0

是的,你的陳述是正確的(如果非常不尋常)。更簡單的是...... WHERE calendar_id =? AND(dtend <= 0或dtstart>?)'。 – 2013-03-05 21:14:47