SQL Server:EXEC中的CAST(动态SQL)

时间:2018-02-21 19:32:38

标签: sql sql-server

我正在尝试动态计算列名,但SQL Server不会让这种情况发生。有没有正确的方法呢?

预期结果

SELECT Column_1
FROM Table

查询

DECLARE @param AS INT;
SELECT @param = 1;

EXEC('SELECT Column_' + CAST(@param AS VARCHAR) + ' FROM Table');

Catch:@Param需要为int,以方便提供输入。

2 个答案:

答案 0 :(得分:6)

请像这样使用

DECLARE @param AS INT;
SELECT @param=1;
DECLARE @SQL AS VARCHAR(MAX) = 'SELECT Column_'+CAST(@param AS VARCHAR(5))+' FROM Table'
EXEC(@SQL);

答案 1 :(得分:1)

  

如果您没有使用数字变量,则不需要使用数字变量   算术运算。

DECLARE @param VARCHAR

DECLARE @param VARCHAR
DECLARE @sql VARCHAR(MAX)
SET @param = '1';
SET @sql = 'select ' + 'Column_' + @param + ' From Table';
EXEC(@sql)