Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So entfernen Sie Leerzeichen aus einer Zeichenfolge in SQL Server

Mit ASCII(RIGHT(ProductAlternateKey, 1)) Sie können sehen, dass das Zeichen ganz rechts in Zeile 2 ein Zeilenvorschub oder ASCII-Zeichen 10 ist.

Dies kann nicht mit dem Standard LTrim entfernt werden RTrim Funktionen.

Sie könnten jedoch (REPLACE(ProductAlternateKey, CHAR(10), '') verwenden

Möglicherweise möchten Sie auch Wagenrückläufe und Tabulatoren berücksichtigen. Diese drei (Zeilenvorschübe, Wagenrückläufe und Tabulatoren) sind die üblichen Übeltäter und können mit dem Folgenden entfernt werden:

LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(ProductAlternateKey, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')))

Wenn Sie auf weitere "Leerzeichen" stoßen, die mit den oben genannten nicht entfernt werden können, versuchen Sie es mit einem oder allen der folgenden:

--NULL
Replace([YourString],CHAR(0),'');
--Horizontal Tab
Replace([YourString],CHAR(9),'');
--Line Feed
Replace([YourString],CHAR(10),'');
--Vertical Tab
Replace([YourString],CHAR(11),'');
--Form Feed
Replace([YourString],CHAR(12),'');
--Carriage Return
Replace([YourString],CHAR(13),'');
--Column Break
Replace([YourString],CHAR(14),'');
--Non-breaking space
Replace([YourString],CHAR(160),'');

Diese Liste möglicher Leerzeichen könnte verwendet werden, um eine Funktion wie :

zu erstellen
Create Function [dbo].[CleanAndTrimString] 
(@MyString as varchar(Max))
Returns varchar(Max)
As
Begin
    --NULL
    Set @MyString = Replace(@MyString,CHAR(0),'');
    --Horizontal Tab
    Set @MyString = Replace(@MyString,CHAR(9),'');
    --Line Feed
    Set @MyString = Replace(@MyString,CHAR(10),'');
    --Vertical Tab
    Set @MyString = Replace(@MyString,CHAR(11),'');
    --Form Feed
    Set @MyString = Replace(@MyString,CHAR(12),'');
    --Carriage Return
    Set @MyString = Replace(@MyString,CHAR(13),'');
    --Column Break
    Set @MyString = Replace(@MyString,CHAR(14),'');
    --Non-breaking space
    Set @MyString = Replace(@MyString,CHAR(160),'');

    Set @MyString = LTRIM(RTRIM(@MyString));
    Return @MyString
End
Go

Welche Sie dann wie folgt verwenden könnten:

Select 
    dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts