2016-08-29 2 views
1

Ich habe eine Tabelle, die nur Varchar-Spalten enthält. Jedes Feld hat das gleiche Muster "xxxxx" und ich möchte das führende und nachfolgende "aus jedem einzelnen Feld reinigen/trimmen".So wenden Sie eine Funktion auf alle Felder an (alle Spalten aller Zeilen)

Ich weiß, wie man es für eine einzelne Spalte tut, aber ich möchte es tun für alle Spalten in einer dynamischen Art und Weise (mit einem dynamischen Satz des Spaltennamen)

Dank

+0

Verwenden Sie sys.colum ns, um Ihre SQL für Sie zu generieren. –

+0

@SeanLange: Könnten Sie mir ein funktionierendes Beispiel geben, wie ich SQL dev beginnen – Dave

+0

Möchten Sie die Spaltennamen nur oder Daten auch trimmen? – p2k

Antwort

0

Hier ist eine Möglichkeit, dies zu tun. Es wird einige dynamischen sQL verlangen, egal Sie diese in Scheiben schneiden, weil Sie müssen die Spaltennamen dynamisch abrufen

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

interessant, aber wenn ich versuche, es führen Sie es mit dem folgenden Fehler fehl:. Msg 102, Ebene 15, Status 1, Zeile 1 falsche Syntax nahe ‚(‘ – Dave

+0

es passiert, wenn i Die letzte Zeile auskommentieren – Dave

+0

Also hast du es herausgefunden oder gibt es noch ein Problem? –

Verwandte Themen