我想知道是否有方法通过使用SQL变量来选择列。例如。表是 - ID,姓名,地址使用变量选择列?
DECLARE @Column varchar(25)
SET @Column = 'Name' -- This can be another column also
SELECT @Column
FROM MyTable
这说明我的“名称”,因为在我的表中的行多次。 它甚至可以做我想要的东西吗?
谢谢。
我想知道是否有方法通过使用SQL变量来选择列。例如。表是 - ID,姓名,地址使用变量选择列?
DECLARE @Column varchar(25)
SET @Column = 'Name' -- This can be another column also
SELECT @Column
FROM MyTable
这说明我的“名称”,因为在我的表中的行多次。 它甚至可以做我想要的东西吗?
谢谢。
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)
感谢您告诉我原因。 –
您可以使用动态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)
,@sql VARCHAR(MAX)
SET @Column = 'Name' -- This can be another column also
SET @sql = 'SELECT '[email protected]+'
FROM MyTable
'
EXEC (@sql)
你可以通过改变EXEC
到PRINT
使测试你的动态SQL查询确保每个所产生的查询是你” d期望。
正是在我看来,你试过了吗? – NickyvV
尽管动态SQL可以工作,但它可能会非常快速地变得非常复杂。它也无法重用,因为它[不能(容易地)与查询结合](http://stackoverflow.com/questions/1492411/sql-server-select-from-stored-procedure)。 (也就是说,我会建议针对基于此操作的基于*的设计)。 – user2864740