使用功能选择所有列

时间:2011-11-15 10:48:23

标签: sql sql-server tsql

这是否可以以任何方式在SELECT中的所有列上应用函数。例如,

SELECT LEN(t.*) FROM Table t;

问题是该表是动态的,具有动态列数,我需要在evry列上应用函数。

1 个答案:

答案 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