SQL - CASE和OR语句

时间:2014-07-03 08:53:30

标签: sql sql-server tsql

我在使用两个SQL语句时遇到问题,即CASE WHENOR。我试图做以下事情:

@variable1 = CASE @variable2 WHEN 2 THEN @variable2 + 2 OR @variable2 - 2

我想执行查询,查找@variable2的特定值,然后在THEN语句后选择选择两个选项之一。这是行不通的。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

这是你想要实现的目标:

@variable1 = CASE @variable2 
                 WHEN 2 THEN @variable2 + 2 
                 ELSE @variable2 - 2
             END

因此,如果@variable2 = 2,则添加2,否则减去2。

听起来你想要从另一个数字中添加或减去指定的数字,所以这里看看你能做些什么:

declare @BaseNumber int
set @BaseNumber = 10 -- number we want to add to or subtract from

declare @MathNumber int 
set @MathNumber = 5 -- number we want to add on or subtract from @BaseNumber 

declare @IsAddition bit
set @IsAddition = 1 -- true means we're adding not subtracting

使用CASE

SELECT @BaseNumber = CASE @IsAddition 
                      WHEN 1 THEN @BaseNumber + @MathNumber
                      ELSE @BaseNumber - @MathNumber
                 END

使用IF阻止:

IF (@IsAddition)
    BEGIN
        SET @BaseNumber = @BaseNumber + @MathNumber
    END
ELSE
    BEGIN
        SET @BaseNumber = @BaseNumber - @MathNumber
    END

答案 1 :(得分:0)

你可以嵌套案例

case @variable2
    when 2 then
        case when someCond
            then 4 -- @variable2 + 2
            else 0 -- @variable2 - 2
        end
    when 3 then @variable2 * 2
    else @variable2
end