如何在T-SQL函数中为所有列名添加前缀?

时间:2011-08-11 11:31:05

标签: sql-server tsql

我有一张表T,有2列C1和C2

我想要一个返回T的函数,但是在为所有列名前缀“PREFIX _”之后。

前缀是传递给函数的动态字符串。

有可能吗?

我想要像

这样的东西
SELECT C1 AS @prefix + 'C1', 
    C2 AS @prefix + 'C2' 
FROM T

2 个答案:

答案 0 :(得分:1)

即使您不知道列,也会这样做。

declare @prefix varchar(20)
declare @sqltext nvarchar(500)
set @prefix = 'prefix_'

declare @columnnames varchar(500)

select @columnnames = coalesce(@columnnames, '')+',' +column_name + ' '+ @prefix+column_name 
from INFORMATION_SCHEMA.COLUMNS a where table_name = 't' and table_schema = 'dbo'

set @sqltext = 'select '+stuff(@columnnames,1,1,char(0))+' from t'

exec(@sqltext)

答案 1 :(得分:0)

对于已知数量的列,您可以使用别名和exec()构造SQL字符串;

declare @prefix varchar(32) = 'prefix_'
declare @sql    nvarchar(1024) 

set @sql = 'select C1 as [' + @prefix + 'C1], C2 as [' + @prefix + 'C2] from T'
exec(@sql)