日期:2014-05-16  浏览次数:20520 次

能不能把一个变量的值 转换成 列名
比如 @declare  a nvarchar(max)
set @a = 'col'
 
能不能把  该变量的值 col 转行成 列名 col
------解决方案--------------------
if  object_id('tb') is not null drop table tb
declare  @a nvarchar(max)
set @a = 'col'
declare @b varchar(100)
set @b ='create table tb ('+@a + ' int)'
exec (@b )
select * from tb 
------解决方案--------------------
用动态SQL实现,把变量@a拼接到一个动态SQL里,然后执行该动态SQL.
------解决方案--------------------

declare @a nvarchar(max),@sql nvarchar(max)
set @a = 'col'
set @sql='select 字段1 as '+@a+' from temp'
exec(@sql)

------解决方案--------------------

接着上面写,假设返回的数据类型是INT :
DECLARE @result INT 
DECLARE @tmp TABLE (result INT)
INSERT @tmp EXEC(@sql)
SELECT @result=result FROM @tmp