我有一张表T,有2列C1和C2
我想要一个返回T的函数,但是在为所有列名前缀“PREFIX _”之后。
前缀是传递给函数的动态字符串。
有可能吗?
我想要像
这样的东西SELECT C1 AS @prefix + 'C1',
C2 AS @prefix + 'C2'
FROM T
答案 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)