如何将函数应用于所有字段(所有行的所有列)

时间:2016-08-29 19:05:44

标签: sql-server

我有一个只包含varchar列的表。每个字段都有相同的模式'“xxxxx”',我想清理/修剪每个字段的前导和尾随。

我知道如何为单个列执行此操作,但我希望以动态方式对所有列执行此操作(使用列名的动态集)

由于

1 个答案:

答案 0 :(得分:1)

这是一种可以做到这一点的方法。无论你是否需要切片,都需要一些动态的sql,因为你必须动态获取列名。

declare @SQL nvarchar(max)

select @SQL = 'Update YourTable set ' + STUFF((select ', replace(' + QUOTENAME(c2.name) + ', ''"'', '''')'
    from sys.columns c2
    where object_id = object_id('YourTable')
    order by c2.column_id
    for xml path('')), 1, 1, '')    
from sys.columns
where object_id = object_id('YourTable')
group by object_id

select @SQL
--exec sp_executesql @SQL --You can uncomment this when you comfortable with the output