2017-05-25 104 views
-1

我已經給出了一段非常大的代碼,它在循環查詢中爲CASE表達式拋出了一個錯誤,有人可能會看到這段代碼並告訴我這是什麼原因導致問題還是應該這樣工作?SQL WHERE CASE表達式不起作用

WHERE 
case when POWER(2, 5) & T.TABLE_NAME = POWER(2, 5) then 1 else 0 end > 0 

對不起,我不能提供更多的信息,正如我所說,這是在循環查詢部分,我最不善於用循環查詢。

+0

,提供樣品數據和你有什麼期望輸出..? – Mansoor

+0

它是什麼數據庫?你會得到什麼錯誤?當我試圖理解這個表達式時,我自己作爲「人類解析器」也會出錯... – Galcoholic

+0

如果它是ssms,那麼我會假設SQL Server。嘗試使用HAVING表達式而不是WHERE –

回答

0

首先,CASE語句必須是表達式的一部分,而不是表達式本身。

應該

WHERE 
0 < case when POWER(2, 5) & T.TABLE_NAME = POWER(2, 5) then 1 else 0 end 
+0

謝謝,不幸的是仍然得到相同的錯誤。 – Mike

0

如果我猜,T.TABLE_NAME不是一個數值。因此,在使用按位運算符時會發生錯誤。

如果是數字,那麼這將是簡單的寫:

WHERE (POWER(2, 5) & T.TABLE_NAME) > 0 

甚至更​​簡單:

WHERE (32 & T.TABLE_NAME) > 0