2013-06-03 68 views
3

我想知道是否可以在WHERE子句中更改運算符的情況下執行case語句。CASE WHERE更改運算符 - TSQL

我想要做的是過濾出基於布爾值的結果。

SELECT * 
FROM table1 
WHERE 
     CASE @Status 
      WHEN 1 THEN Name LIKE 'SOMETHING%' 
      WHEN 2 THEN Name NOT LIKE 'SOMETHING%' 
     END 

我想知道這是否可能?

+1

可能重複的[使用CASE for WHERE field IN](http://stackoverflow.com/questions/14114815/using-case-for-where-field-in) –

回答

13

你可以不用一個SWITCH表達式,像這樣:

SELECT * 
FROM table1 
WHERE 
    (@Status = 1 AND Name LIKE 'SOMETHING%') 
OR (@Status = 2 AND Name NOT LIKE 'SOMETHING%') 

由於@Status可一次等於只有一件事,在OR表達的一個組成部分,將決定WHERE的結果條件。

+0

令人驚歎,如此簡單,爲什麼我想不到那! –

+0

邏輯位,我以前用過很多次,但邏輯很清楚。 –