我可以在SQL Server中将变量作为列名传递给select语句

Min*_*iel 20 sql-server-2008

可能重复:
SQL:根据变量选择动态列名

我有以下简单的select陈述:

 DECLARE @value varchar(10) 
 SET @value = 'intStep' 

 SELECT @value FROM dbo.tblBatchDetail 
Run Code Online (Sandbox Code Playgroud)

我试过了

 SELECT CAST(@value AS varchar(10)) FROM dbo.tblBatchDetail 
Run Code Online (Sandbox Code Playgroud)

而且我得到了一份清单 intstep

问题:我可以将变量作为列名传递给此语句吗?或者这样做的最佳方式是什么

我正在使用SQL Server 2008(9.0 RTM)

这将是一个存储过程

提前致谢

Ste*_*eve 36

您不能使用变量名来绑定列或其他系统对象,您需要动态sql

DECLARE @value varchar(10)  
SET @value = 'intStep'  
DECLARE @sqlText nvarchar(1000); 

SET @sqlText = N'SELECT ' + @value + ' FROM dbo.tblBatchDetail'
Exec (@sqlText)
Run Code Online (Sandbox Code Playgroud)

  • 抱歉忘了@sqlText周围的parenthesys,回答更新 (2认同)