我正在尝试动态计算列名,但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,以方便提供输入。
答案 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)