Was ist der beste Weg, um alle Leerzeichen aus einer Zeichenfolge in SQL Server 2008 zu entfernen?
LTRIM(RTRIM(' a b '))
würde alle Leerzeichen rechts und links von der Zeichenfolge entfernen, aber ich muss auch das Leerzeichen in der Mitte entfernen.
sql
sql-server
string
whitespace
trim
Ananth
quelle
quelle
Antworten:
Ersetzen Sie es einfach;
Bearbeiten: Nur zur Verdeutlichung; Es ist ein globaler Ersatz, es besteht keine Notwendigkeit
trim()
oder Sorge um mehrere Leerzeichen für entwederchar
odervarchar
:Ergebnis
quelle
Ich würde einen REPLACE verwenden
ERSETZEN
quelle
Wenn es sich um ein Update für eine Tabelle handelt, müssen Sie dieses Update nur mehrmals ausführen, bis 0 Zeilen betroffen sind.
quelle
REPLACE()
Funktion :quelle
Referenz aus diesem Blog:
Erstellen Sie zunächst eine Beispieltabelle und Daten:
Skript zum Auswählen einer Zeichenfolge ohne zusätzliche Leerzeichen:
Ergebnis:
quelle
100% arbeiten
Sie können
"column_name"
oder verwendencolumn_name
Vielen Dank
Subroto
quelle
select replace(replace(replace(varcharColumn,char(13),''),char(10),''),' ','')
, um alle Zeilenumbrüche und Leerzeichen aus einervarchar
Spalte zu entfernen . Wenn ich '\ n' und '\ r' anstelle von char (13) und char (10) verwendet habe, hat es nicht funktioniert.t-sql ersetzen http://msdn.microsoft.com/en-us/library/ms186862.aspx
ersetzen (val, '', '')
quelle
Wenn eine Zeichenfolge mehrere Leerzeichen enthält, funktioniert das Ersetzen möglicherweise nicht ordnungsgemäß. Dafür sollte die folgende Funktion verwendet werden.
Beispiel:
Ausgabe:
quelle
Dies führt den Trick aus, die Leerzeichen auf den Zeichenfolgen zu entfernen:
quelle
Nur für den Fall, dass Sie Leerzeichen in allen Spalten TRIMMEN müssen, können Sie dieses Skript verwenden, um es dynamisch auszuführen:
quelle
Wenn Sie Leerzeichen, - und einen anderen Text aus der Zeichenfolge entfernen möchten, verwenden Sie Folgendes:
Angenommen, Sie haben eine Handynummer in Ihrer Tabelle wie "718-378-4957" oder "7183784957" und möchten die Handynummer ersetzen und erhalten. Verwenden Sie dann den folgenden Text.
Ergebnis: - 7183784957
quelle
Nur ein Tipp: Wenn Sie Probleme mit der Ersetzungsfunktion haben, ist der Datentyp möglicherweise auf nchar eingestellt (in diesem Fall ist die Länge fest und funktioniert nicht).
quelle
Um alle oben genannten Antworten zu vervollständigen, gibt es in StackOverflow zusätzliche Beiträge zum Umgang mit ALLEN Leerzeichen ( eine vollständige Liste dieser Zeichen finden Sie unter https://en.wikipedia.org/wiki/Whitespace_character ):
quelle
ersetzen (ersetzen (Spaltenname, CHAR (13), ''), CHAR (10), '')
quelle
das ist nützlich für mich:
.
quelle
Ich hatte dieses Problem heute und das Ersetzen / Trimmen hat den Trick gemacht. Siehe unten.
vorher und nachher :
quelle
LTRIM
& beschäftigenRTRIM
?Entfernen der Leerzeichen in einer Zeichenfolge links und rechts. Platz in der Mitte entfernen
Replace
.Sie können
RTRIM()
Leerzeichen von rechts undLTRIM()
Leerzeichen von links entfernen, daher werden linke und rechte Leerzeichen wie folgt entfernt:quelle
Syntax zum Ersetzen bestimmter Zeichen:
Zum Beispiel wird in der Zeichenfolge "HelloReplaceThingsGoing" das Wort "Ersetzen" durch "Wie" ersetzt
quelle
Eine funktionale Version (udf), die Leerzeichen, cr, lf, Tabulatoren entfernt oder konfigurierbar ist.
Ergebnis: '234asdfwefwef3x'
quelle
Aus irgendeinem Grund funktioniert das Ersetzen jedes Mal nur mit einer Zeichenfolge. Ich hatte eine Zeichenfolge wie diese " Test MSP " und möchte nur ein Leerzeichen lassen.
Ich habe den Ansatz von @Farhan verwendet, aber mit einigen Änderungen:
Dann führe ich mein Update so aus
Dann habe ich dieses Ergebnis bekommen: Test MSP
Hier posten, falls jemand es so braucht wie ich.
Läuft auf: Microsoft SQL Server 2016 (SP2)
quelle
Überprüfen und testen Sie das folgende Skript (Unit Tested) -
quelle
Es scheint, dass sich jeder immer wieder auf eine einzelne REPLACE-Funktion bezieht. Oder sogar viele Aufrufe einer REPLACE-Funktion. Wenn Sie jedoch eine dynamische Ausgabe mit einer unbekannten Anzahl von Leerzeichen haben, funktioniert dies nicht. Jeder, der sich regelmäßig mit diesem Problem befasst, weiß, dass REPLACE nur ein einzelnes Leerzeichen entfernt, NICHT ALLE, wie es sollte. Und LTRIM und RTRIM scheinen das gleiche Problem zu haben. Überlassen Sie es Microsoft. Hier ist eine Beispielausgabe, die eine WHILE-Schleife verwendet, um ALLE CHAR (32) -Werte (Leerzeichen) zu entfernen.
Hier ist die Ausgabe des obigen Codes:
Um noch einen Schritt weiter zu gehen und es in einer UPDATE- oder SELECT-Anweisung zu verwenden, ändern Sie es in ein udf.
Verwenden Sie dann die Funktion in einer SELECT- oder INSERT-Anweisung:
quelle