我想知道是否有一种方法可以使用 SQL 变量来选择列。例如。表是- 身份证、姓名、地址
DECLARE @Column varchar(25)
SET @Column = 'Name' -- This can be another column also
SELECT @Column
FROM MyTable
这会向我显示“名称”,次数与表中的行数一样多。 甚至可以做我想做的事吗?
谢谢。
可以使用动态 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 查询,以确保每个结果查询都是您所期望的。
您可以使用动态 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)
Sql 当前正在将您的变量解释为字符串。
DECLARE @Column varchar(25)
SET @Column = 'Name' -- This can be another column also
SET @sqlText = N'SELECT ' + @Column + ' FROM MyTable'
EXEC (@sqlText)
我认为你还需要声明 sqltext