使用变量选择列?

问题描述 投票:0回答:4

我想知道是否有一种方法可以使用 SQL 变量来选择列。例如。表是- 身份证、姓名、地址

DECLARE @Column varchar(25)
SET @Column = 'Name' -- This can be another column also
SELECT @Column
FROM MyTable

这会向我显示“名称”,次数与表中的行数一样多。 甚至可以做我想做的事吗?

谢谢。

sql sql-server sql-server-2005
4个回答
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 查询,以确保每个结果查询都是您所期望的。


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)

1
投票

Sql 当前正在将您的变量解释为字符串。

来自之前关于堆栈溢出的答案:

DECLARE @Column varchar(25)
SET @Column = 'Name' -- This can be another column also
SET @sqlText = N'SELECT ' + @Column + ' FROM MyTable'
EXEC (@sqlText)

0
投票

我认为你还需要声明 sqltext

© www.soinside.com 2019 - 2024. All rights reserved.