从where子句中的case语句返回条件

Raj*_*lar 0 sql sql-server sql-server-2005

通过搜索多个SO线程,我无法编写一个在where子句中返回适当条件的查询.例如,我有列Col1,它是int一个变量,var1就像varchar现在我在查询下面使用的那样,但它不起作用.

Where CASE WHEN var1 = '1' THEN (Col1 = 1)  
WHEN var1 = '2' THEN (Col1 = 2)  
ELSE AND (1= 1) 
END
Run Code Online (Sandbox Code Playgroud)

它给了我syntax error near '='.

编辑:

如果我想要条件如何

Col1 IN(condtions ....)

Kaf*_*Kaf 5

我认为它应该是这样的;

Where Col1 = CASE WHEN var1 IN ('1','2') THEN var1 ELSE Col1 END
Run Code Online (Sandbox Code Playgroud)

要么

Where Col1 = CASE  var1 WHEN  '1' THEN 1
                        WHEN  '2' THEN 2
             ELSE Col1 END ...
Run Code Online (Sandbox Code Playgroud)

作为旁注,如果Col1 is nullableneed to select那些那么使用;

Where Col1 is null OR 
             Col1 = CASE  var1 WHEN  '1' THEN 1
                        WHEN  '2' THEN 2
             ELSE Col1 END ...
Run Code Online (Sandbox Code Playgroud)