小编use*_*911的帖子

SQL CASE表达式 - 设置局部变量的值

我有一些使用多个if语句(大约100)的T-SQL代码,如下所示.如果第一个IF语句条件的计算结果为TRUE,它仍会评估99个语句的其余部分.

IF(@check = 'abc') SET @var1 = @value
IF(@check = 'def') SET @var2 = @value
IF(@check = 'ghi') SET @var3 = @value
IF(@check = 'jkl') SET @var4 = @value
IF(@check = 'mno') SET @var5 = @value
…
…
Run Code Online (Sandbox Code Playgroud)

我想将它们转换为使用CASE表达式.例如

CASE @check
    WHEN 'abc' THEN SET @var1 = @value
    WHEN 'def' THEN SET @var2 = @value
    WHEN 'ghi' THEN SET @var3 = @value
    WHEN 'jkl' THEN SET @var4 = @value
    WHEN 'mno' THEN SET @var5 = @value
    …
    …
END
Run Code Online (Sandbox Code Playgroud)

但是,我无法这样做,我得到一个SQL错误,说我不能在CASE表达式中使用SET. …

sql t-sql sql-server sql-server-2000 case

9
推荐指数
1
解决办法
7万
查看次数

标签 统计

case ×1

sql ×1

sql-server ×1

sql-server-2000 ×1

t-sql ×1