我有一些使用多个if语句(大约100)的T-SQL代码,如下所示。如果第一个IF语句条件评估为TRUE,它仍然评估99条语句的其余部分。SQL CASE表达式 - 设置局部变量的值
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
…
…
我想将它们转换为使用CASE表达式。对于e.g
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
但是,我不能这样做,我得到的是说我不能使用CASE表达式中设置一个SQL错误。
有没有人有任何想法我可以做到这一点?谢谢!
如果你可以使用else,但是,其中每个条件都设置了一个不同的变量。你确定你输入的问题正确吗? –
它会工作吗?SET @ var1 = CASE when ... then ... END'? – a1ex07
为什么你需要100个不同的变量?为什么不根据'@ check'的值分配给* one *变量? –