我想知道是否有办法通过使用SQL变量来选择列。例如。表是 - ID,姓名,地址
DECLARE @Column varchar(25)
SET @Column = 'Name' -- This can be another column also
SELECT @Column
FROM MyTable
这显示了我的名字'在我的表中有多少行。 甚至可以做我想做的事情吗?
感谢。
答案 0 :(得分:3)
可以使用动态SQL执行此操作:
DECLARE @Column varchar(25)
,@sql VARCHAR(MAX)
SET @Column = 'Name' -- This can be another column also
SET @sql = 'SELECT '+@Column+'
FROM MyTable
'
EXEC (@sql)
您可以通过将EXEC
更改为PRINT
来测试动态SQL查询,以确保每个结果查询都符合您的预期。
答案 1 :(得分:2)
您可以使用动态SQL:
DECLARE @Column nvarchar(25)
SET @Column = 'Name' -- This can be another column also
DECLARE @sql nvarchar(max) = N'SELECT ' + @Column + N' FROM MyTable'
exec(@sql)
答案 2 :(得分:1)
Sql当前正在将您的变量解释为字符串。
From a previous answer on stack overflow:
DECLARE @Column varchar(25)
SET @Column = 'Name' -- This can be another column also
SET @sqlText = N'SELECT ' + @Column + ' FROM MyTable'
EXEC (@sqlText)