2016-08-29 71 views
1

我有一個只包含varchar列的表。每個字段都有相同的模式''xxxxx'',我想清除/修剪每個字段中的前導和尾部「。對於以動態的方式中的所有列(帶有一組動態的列名)如何將函數應用於所有字段(所有行的所有列)

感謝

+0

使用sys.colum ns爲你生成你的sql。 –

+0

@SeanLange:你可以給我一個工作的例子,因爲我開始SQL開發 – Dave

+0

你想只修剪列名或數據? – p2k

回答

0

這裏是你可以做到這一點的方法之一。這將需要一些動態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 
+0

看起來很有趣,但是當我嘗試運行它,它失敗,出現以下錯誤: 消息102,級別15,狀態1,行1 附近有語法錯誤(' – Dave

+0

它發生時,我取消最後一行的註釋 – Dave

+0

那麼你是否知道它還存在問題? –

相關問題