Trimmen Sie alle Datenbankfelder

7

Weißt du, ob es einen schnellen Weg auf dem SQL-Server gibt (via transact-sql), dass ich alle Datenbank-String-Felder trimmen könnte.

    
river0 03.02.2009, 16:36
quelle

9 Antworten

19

Keine Cursor. Kopieren Sie die Ausgabe und fügen Sie sie ein. Funktioniert auch für SQL 2000, das nicht über Varchar (max) verfügt. Dies kann leicht erweitert werden, um eine GO-Zeile am Ende jedes UPDATE hinzuzufügen, falls gewünscht.

%Vor%     
alyssackwan 03.02.2009, 18:55
quelle
13

Ihre Frage ist ein bisschen vage, aber ist es das wonach Sie suchen?

%Vor%

Dadurch werden sowohl führende als auch nachfolgende Leerzeichen aus allen Werten in der Spalte 'Meine Spalte' in der Tabelle 'Meine Tabelle' entfernt.

    
Adam Ralph 03.02.2009 16:40
quelle
3

Schleife über information_schema.columns und RTRIM die varchar / nvarchar-Spalten durch dynamisches Erstellen der update-Anweisung

    
SQLMenace 03.02.2009 16:41
quelle
3

Wenn jemand weiß, wie man das ohne einen Cursor macht, poste es bitte:

%Vor%     
Cade Roux 03.02.2009 17:07
quelle
2

Stellen Sie nur sicher, dass Sie eine Trimmung für VARCHAR-String-Felder vornehmen, nicht für CHAR-Felder:)

Das würde nicht viel nützen.

    
BradC 03.02.2009 16:43
quelle
1

Die Antwort von dan wurde aktualisiert, um alle Tabellen in der Datenbank zu verwenden. Führen Sie einfach das Snippet aus und kopieren Sie das Ergebnis zum Ausführen.

%Vor%     
Sven 03.12.2014 07:43
quelle
0

Danke Leute,

Entaroadun-Code funktionierte ziemlich gut für mich, ich musste nur ein paar kleine Änderungen an meinen Anforderungen vornehmen, und außerdem musste ich @colum_list bei jeder Iteration zurücksetzen.

%Vor%     
river0 04.02.2009 08:36
quelle
0

- V schnell und schmutzig!

- Wenn dies Code generieren soll, der in einer einzigen Tabelle ausgeführt wird, führen Sie diesen Code mit der Textausgabe aus:

setze nocount auf

deklariere @table nvarchar (100) Wählen Sie @table = 'YourTableHere'

SELECT 'UPDATE' + @tabelle + 'SET' SELECT '[' + Spaltenname + '] =' + 'LTRIM (RTRIM ([' + Spaltenname + '])),' Von INFORMATION_SCHEMA.Columns WHERE Table_Name = @Tabelle    AND Data_Type LIKE '% CHAR%'

- Ausführen als Textausgabe (Abfrage / Ergebnisse an ... Ergebnisse an Text - Kopieren und fügen Sie die Textausgabe (mit Ausnahme des letzten Kommas) in ein neues Abfragefenster ein und führen Sie sie aus.

    
dan 05.11.2009 16:36
quelle
0

OK, das war schnell und dreckig, aber ich bin durch ein aktuelles Projekt ausreichend motiviert, das "richtig" zu machen - und zwar auch ohne Cursor, aber ein wenig sql-Verkettungstrick. Verwendet jedoch dynamisches sql:

%Vor%     
dan 06.11.2009 13:59
quelle

Tags und Links