gpt4 book ai didi

sql - 具有多值列表的局部变量

转载 作者:行者123 更新时间:2023-12-01 13:30:42 26 4
gpt4 key购买 nike

我使用 Excel 连接连接到 SQL Server 以将数据从 SQL Server 查询到 Excel。

我在 Excel 连接中有几次以下 WHERE 子句。我需要不时地替换 WHERE 多值列表。为了简单地替换,我想使用一个本地参数@Trans。有了本地参数,我只能改变它,所有的SQL都会用它来查询。

WHERE Type in ('R','D','C')

如果是单个选项,下面的代码有效。

DECLARE @TRans CHAR(200)= 'R';
SELECT .....
WHERE Type in (@Trans)

如果是多个选项,下面的代码不起作用

DECLARE @TRans CHAR(200)= 'R,D,C';
SELECT .....
WHERE Type in (@Trans)

DECLARE @TRans CHAR(200)= '''R'''+','+'''D'''+','+'''C''';
SELECT .....
WHERE Type in (@Trans)

如何为多值列表声明@Trans,例如('R','D','C')?谢谢。

最佳答案

可以使用动态sql

DECLARE @TRans VARCHAR(200)= '''R'',''D'',''C''';
DECLARE @sql VARCHAR(MAX) = '';

SET @sql = 'SELECT * FROM table WHERE Type in (' + @Trans + ');'

EXEC @sql

记下这些字符值后@TRans 中值的引号。

如果要检查@sql 的值,您将看到构造的 sql 语句,请将 EXEC @sql 替换为 PRINT @sql。

@sql的结果

SELECT * FROM table WHERE Type in ('R','D','C');

关于sql - 具有多值列表的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46044763/

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