在等号左侧组合声明字符串变量的SQL
我试图在等号的左侧组合两个声明的字符串变量,这将使我能够选择变量的调用方式。这可能吗?我想我可以为我想做的事情找到一个解决方案,但是下面的代码会更简洁 这是我迄今为止所做的,但它不起作用:在等号左侧组合声明字符串变量的SQL,sql,sql-server,tsql,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(
DECLARE @operate VARCHAR(2000)
DECLARE @date5 VARCHAR(6)
DECLARE @month VARCHAR(2)
SET @month=5
SET @operate='(@date' +@month+ '=10)'
EXEC(@operate)
PRINT(@date5)
这正是你所要求的,尽管我忍不住觉得这不是最好的工作方式,而且可能只是为将来积累了维护方面的麻烦。但是,如果没有更多的上下文信息,就很难提出替代方案。考虑创建一个关于更高层次问题的方法和方法。我想也许有一种更简单的方法将数据存储在表中 它假设所有@dateX变量都是varchar(6):
不能像那样使用exec()来计算字符串,请使用sp_executeSQL¶meters。你们应该更充分地解释你们想要完成什么。需求不明确,在这方面你们真的会有所帮助。向我们显示起始值和所需输出。
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)