这是否可以以任何方式在SELECT中的所有列上应用函数。例如,
SELECT LEN(t.*) FROM Table t;
问题是该表是动态的,具有动态列数,我需要在evry列上应用函数。
答案 0 :(得分:3)
不,你需要一些动态的sql;
declare @table varchar(256) = 'the_table'
declare @sql nvarchar(4000) = ''
select
@sql += case @sql when '' then '' else ',' end + ' func(' + quotename(column_name) + ') as ' + quotename(column_name)
from
information_schema.columns
where
table_name = @table
set @sql = 'select' + @sql + ' from ' + @table
exec(@sql)
产生&执行
select func([fld1]) as [fld1], func([fld2]) as [fld2] ... from the_table