2012-10-02 29 views
7

我想建立一个结合了以下逻辑CASE语句,但是SQL编译器不喜欢“或”在我的发言:T-SQL语法的问题 - 使用或CASE语句

CASE expression 
WHEN expression1 OR expression2 
THEN <yadda yadda> 
ELSE <yadda yadda> 
END 

下面更具体的代码:

CASE @var1 
WHEN '99' OR '22' 
      THEN   
       (CASE @var2 
       WHEN 'All' THEN col1 
       ELSE @var2 
       END) 
END 
+2

这是允许的。您的某个确切表达式中可能有错误。请张贴他们。 –

+0

在'CASE表达式'之后不允许有'OR'。语法有两种形式。这是简单的形式。您需要[搜索表单](http://msdn.microsoft.com/en-us/library/ms181765.aspx)。 –

回答

9
DECLARE @Variable INT; 
SET @Variable = 1; 

SELECT 
    CASE 
     WHEN @Variable = 1 OR @Variable = 2 THEN 'It is 1 or 2' 
     WHEN @Variable = 3 THEN 'It is 3' 
     ELSE 'It is not 1, 2, or 3' 
    END AS [SomeField] 

MSDN文档为CASEOR,和Expressions

4

根据您的编辑,你甚至不需要一个OR声明:

CASE 
    WHEN @var1 IN ('99', '22')     
    THEN       
     (CASE @var2     
      WHEN 'All' 
      THEN col1     
      ELSE @var2     
      END) 
    END