gpt4 book ai didi

sql-server - 在 SQL SERVER 的 SELECT 语句中有条件地分配变量

转载 作者:行者123 更新时间:2023-12-05 05:27:41 25 4
gpt4 key购买 nike

我正在尝试在 SQL Server 上编写一个 SELECT 语句,它根据条件显示项目,我在随后的 WHERE 子句中提供了该条件。

这是我尝试编写的内容的简化版本。

DECLARE @tmpvar varchar(5)
....

SELECT @tmpvar,
....
FROM some_table
WHERE
....
and @tmpvar =
CASE WHEN (some condition here)
THEN 'YES'
ELSE 'NO'
END

上面的代码执行成功,但是当我检查 @tmpvar 的值时,它仍然未分配。

我想知道我使用的语法是否有误。如果是这样,使用给定条件在 SELECT 语句中分配变量的正确方法是什么?如果这个问题是多余的,请先道歉。

最佳答案

您不能在 WHERE 子句中赋值。您可以在SELECT子句:

DECLARE @tmpvar varchar(5)
....

SELECT @tmpvar =
CASE WHEN (some condition here)
THEN 'YES'
ELSE 'NO'
END,
....
FROM some_table
WHERE
....

但前提是您不同时尝试检索数据。此外,如果结果集中有超过 1 行,则很难定义哪些行会影响结果,除非您有 ORDER BY 子句:

If the SELECT statement returns more than one value, the variable is assigned the last value that is returned.


您可能已经注意到,SQL 使用= 进行赋值、比较和引入别名。由=出现的位置决定。在WHERE子句中,=只能是比较。

关于sql-server - 在 SQL SERVER 的 SELECT 语句中有条件地分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17857841/

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