SQL在等号的左侧组合声明的字符串变量

时间:2017-01-13 14:10:52

标签: sql sql-server tsql

我正在尝试在等号的左侧组合两个声明的字符串变量,这将使我能够选择将调用我的变量。这可能吗?我想我可以找到我想做的工作,但下面的代码会更清晰。

这是我到目前为止所做的,但它不起作用:

DECLARE @operate VARCHAR(2000)
DECLARE @date5 VARCHAR(6)
DECLARE @month VARCHAR(2)
SET @month=5
SET @operate='(@date' +@month+ '=10)'
EXEC(@operate)
PRINT(@date5)

1 个答案:

答案 0 :(得分:0)

这就是你所要求的,尽管我不禁觉得它不是最好的工作方式,而且可能只是存储未来的维护问题。如果没有更多的上下文信息,很难提出替代方案。考虑创建一个关于更高级别问题的问题以及处理它的方法。我怀疑在表格中存储数据会更简单吗?

假设所有@dateX变量都是varchar(6):

DECLARE @operate NVARCHAR(2000)
DECLARE @params NVARCHAR(2000)
DECLARE @date5 VARCHAR(6)
DECLARE @month VARCHAR(2)
SET @month=5
SET @operate=N'set @date' + @month + '=10'
SET @params=N'@date' + @month + ' varchar(6) OUTPUT'
exec master.dbo.sp_ExecuteSQL @operate, @params, @date5=@date5 output
PRINT(@date5)