2011-12-16 119 views
1

我在數據庫中有兩列:campus1campus2,我想編寫一個查詢做以下情形:如果在SQL查詢語句

如果campus2爲null,則只有比較campus1數據,否則比較數據campus1campus2

我寫了如下的查詢,但得到了錯誤信息。

select * from tbl1 where 
case when campus2 is null then ([email protected] or campus1 is null) 
else 
    ([email protected] or campus1 is null) and ([email protected] or campus2 is null) 
end 

任何人都可以指向正確的方向嗎?

+0

是沒有意義比擬的 - 即使它compil ed,你`else`子句中的條件涵蓋了你似乎正在檢查的條件。 – 2011-12-16 15:48:05

+1

hrmm,不要以爲你需要case語句。如何從tbl1中選擇*(campus2爲null或campus2 = @ campus2)和campus1 = @ campus1。 – Intrigue 2011-12-16 15:49:37

回答

0

你並不需要一個case語句這裏只是寫出來的布爾邏輯

WHERE 
(campus2 is null 
     AND 
    ([email protected] or campus1 is null)) 
OR 
(campus2 is not null 
     AND 
    ([email protected] or campus1 is null)     
    and [email protected]) 
) 

作爲一個側面說明,如果你真的想在Where子句中使用一個Case聲明你通常它寫在這種形式

WHERE 
     CASE WHEN condition THEN expression 
      ELSE otherExpression 
     END = @SomeParameter 

此評估幾個條件到一個值來對參數