T-SQL语法问题 - 在CASE语句中使用OR

12

我想建立一个包含以下逻辑的CASE语句,但是SQL编译器不喜欢我的语句中的“OR”:

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
这是允许的。你可能在其中一个精确表达式中有错误,请发布它们。 - Joel Coehoorn
CASE表达式中不允许使用OR。该语法有两种形式,即简单形式和搜索形式 - Martin Smith
2个回答

11
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文档介绍了 CASE, OR表达式


6
根据您的编辑,甚至不需要使用OR语句:
CASE 
    WHEN @var1 IN ('99', '22')                
    THEN                         
         (CASE @var2                 
          WHEN 'All' 
          THEN col1                 
          ELSE @var2                 
          END) 
    END 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接