gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:36:37 25 4
gpt4 key购买 nike

我有一些使用多个 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


我想将它们转换为使用 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

但是,我无法这样做,并且收到一个 SQL 错误,指出我无法在 CASE 表达式中使用 SET。

有人知道我如何实现这一目标吗?谢谢!

最佳答案

case 语句不会解决问题:将 SET 与 CASE 结合使用的唯一方法是:

SET @var = CASE @check
WHEN 'abc' THEN @value
[etc]
END

...这对你不起作用,因为它只能设置一个变量。所以你需要使用 ELSE,即:

IF (@check = 'abc') SET @var1 = @value
ELSE IF (@check = 'def') SET @var2 = @value
ELSE IF (@check = 'ghi') SET @var3 = @value
ELSE IF (@check = 'jkl') SET @var4 = @value
ELSE IF (@check = 'mno') SET @var5 = @value
[...]

但是,如果您有 100 个像这样设置 100 个不同变量的子句,那么听起来您的方法可能是错误的:我会退一步问自己为什么需要 100 个单独的变量。作为基于集合的解决方案,您可能可以做一些更好的事情,无论是从核心表还是临时表中读取。但是,我们需要您尝试执行的操作的更多详细信息(使用一个小但功能齐全的示例)。

关于SQL CASE 表达式 - 设置局部变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19301323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com