请考虑以下
declare @MyField varchar(255);
set @MyField = 'MyDatabaseField';
select distinct Table.@MyField
from Table
这会导致错误Incorrect syntax near @MyField
。然后我试了一下:
select distinct Table.['+@MyField+']
from Table
但是,这会导致Incorrect column name
错误。
如何在此查询中正确使用@MyField?我在SQL Server 2008上。
答案 0 :(得分:2)
请尝试通过构建字符串来执行。
declare @MyField varchar(255);
set @MyField = 'MyDatabaseField';
exec ('select distinct Table.'+@MyField+' from Table')
答案 1 :(得分:2)
您应该使用动态SQL来实现这一目标。您可以使用sp_executesql
存储过程来执行此操作。请注意,我没有将变量声明更改为** N ** VARCHAR。
declare @MyField nvarchar(255)
set @MyField = N'MyDatabaseField'
declare @sql nvarchar(max) = N'select distinct ' + @MyField + N' from TableName'
exec sp_executesql @sql