Ved hjælp af ASCII(RIGHT(ProductAlternateKey, 1))
du kan se, at det mest højre tegn i række 2 er et linjeskift eller et Ascii-tegn 10.
Dette kan ikke fjernes med standard LTrim
RTrim
funktioner.
Du kan dog bruge (REPLACE(ProductAlternateKey, CHAR(10), '')
Du vil måske også tage højde for vognretur og faner. Disse tre (Linje feeds, vognretur og faner) er de sædvanlige syndere og kan fjernes med følgende :
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(ProductAlternateKey, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')))
Hvis du støder på flere "white space"-tegn, der ikke kan fjernes med ovenstående, så prøv en eller alle af nedenstående:
--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),'');
Denne liste over potentielle mellemrumstegn kan bruges til at oprette en funktion som f.eks.:
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
Som du så kunne bruge som følger:
Select
dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts