sql >> Database >  >> RDS >> Sqlserver

Witruimtetekens verwijderen uit een tekenreeks in SQL Server

Met behulp van ASCII(RIGHT(ProductAlternateKey, 1)) je kunt zien dat het meest rechtse teken in rij 2 een Line Feed of Ascii Character 10 is.

Dit kan niet worden verwijderd met behulp van de standaard LTrim RTrim functies.

U kunt echter (REPLACE(ProductAlternateKey, CHAR(10), '') gebruiken

Mogelijk wilt u ook rekening houden met retourzendingen en tabbladen. Deze drie (regelinvoeren, regelterugloop en tabbladen) zijn de gebruikelijke boosdoeners en kunnen als volgt worden verwijderd:

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

Als je nog meer "witruimte"-tekens tegenkomt die niet kunnen worden verwijderd met de bovenstaande, probeer dan een of alle van de onderstaande:

--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),'');

Deze lijst met mogelijke witruimtetekens kan worden gebruikt om een ​​functie te maken zoals:

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

Die je dan als volgt zou kunnen gebruiken:

Select 
    dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts


  1. Construct geneste objectgrafiek van SQL heeft veel relaties

  2. Typen SQL Server-cursor - Dynamische cursor | SQL Server-zelfstudie / TSQL-zelfstudie

  3. Functionele notatie gebruiken in PostgreSQL-query's in plaats van puntnotatie

  4. Oracle PL/SQL - Hoe te ontsnappen aan dubbele punt (:), verkeerd geïnterpreteerd als bindvariabele