it-swarm.com.de

Wie kann ich LTRIM/RTRIM verwenden, um führende/nachgestellte Leerzeichen zu suchen und zu ersetzen?

Ich bin gerade dabei, führende und nachgestellte Leerzeichen aus einer NVARCHAR (MAX) -Spalte zu löschen, die mit Preisen gefüllt ist (mit NVARCHAR, da Daten aus mehreren Betriebssystemen mit ungeraden Zeichen importiert werden). 

An diesem Punkt habe ich einen T-SQL-Befehl, der die führenden/nachgestellten Leerzeichen von den statischen Preisen entfernen kann. Wenn es jedoch darum geht, mit demselben Befehl alle Preise zu entfernen, bin ich verblüfft.

Hier ist das statische Skript, mit dem ich einen bestimmten Preis entfernt habe:

UPDATE *tablename* set *columnname* = LTRIM(RTRIM(2.50)) WHERE cost = '2.50 ';

Ich habe versucht, alle folgenden Leerzeichen zu entfernen:

UPDATE *tablename* set *columnname* LIKE LTRIM(RTRIM('[.]')) WHERE cost LIKE '[.] ';

Ich habe auch verschiedene Variationen des% für zufällige Charaktere ausprobiert, aber an diesem Punkt drehe ich meine Räder.

Ich hoffe, dass ich einen einfachen Befehl ausführen kann, der alle führenden und nachgestellten Leerzeichen in jeder Zelle dieser Spalte entfernt, ohne die tatsächlichen Spaltendaten zu ändern.

7
Techie Joe

Um Leerzeichen von links/rechts zu entfernen, verwenden Sie LTRIM/RTRIM. Was hattest du

UPDATE *tablename*
   SET *columnname* = LTRIM(RTRIM(*columnname*));

hätte an ALLEN Reihen gearbeitet. Um Updates zu minimieren, wenn Sie kein Update benötigen, ist der Update-Code unverändert, der LIKE-Ausdruck in der WHERE-Klausel wäre jedoch gewesen

UPDATE [tablename]
   SET [columnname] = LTRIM(RTRIM([columnname]))
 WHERE 32 in (ASCII([columname]), ASCII(REVERSE([columname])));

Hinweis: 32 ist der ASCII-Code für das Leerzeichen.

10
RichardTheKiwi

Um Leerzeichen zu entfernen, benutzen Sie bitte ltrim/rtrim LTRIM (String) RTRIM (String) Der an die Funktionen übergebene String-Parameter kann ein Spaltenname, eine Variable, eine Literal-Zeichenfolge oder die Ausgabe einer benutzerdefinierten Funktion oder einer skalaren Abfrage sein.

SELECT LTRIM(' spaces at start')
SELECT RTRIM(FirstName) FROM Customers

Lesen Sie mehr: http://rockingshani.blogspot.com/p/sq.html#ixzz33SrLQ4Wi

2
techshaan

LTrim-Funktion und RTrim-Funktion:

  • Die LTrim-Funktion zum Entfernen von führenden Leerzeichen und die RTrim-Funktion zum Entfernen von nachfolgenden Leerzeichen aus einer Zeichenfolgenvariablen.
  • Es benutzt die Trim-Funktion um beide Arten von Leerzeichen zu entfernen.

                  select LTRIM(RTRIM(' SQL Server '))
    

    ausgabe:

                             SQL Server
    
1
Laxmi
SELECT RTRIM(' Author ') AS Name;

Die Ausgabe erfolgt ohne nachgestellte Leerzeichen.

Name —————— ‘Autor’

Ich verstehe, dass diese Frage für SQL Server 2012 ist, aber wenn Sie dasselbe Szenario für SQL Server 2017 oder SQL Azure verwenden, können Sie Trim direkt wie folgt verwenden:

UPDATE *tablename*
   SET *columnname* = trim(*columnname*);
0