Använda ASCII(RIGHT(ProductAlternateKey, 1))
du kan se att det högraste tecknet på rad 2 är en radmatning eller Ascii-tecken 10.
Detta kan inte tas bort med standard LTrim
RTrim
funktioner.
Du kan dock använda (REPLACE(ProductAlternateKey, CHAR(10), '')
Du kanske också vill ta hänsyn till vagnreturer och flikar. Dessa tre (linjematningar, vagnreturer och flikar) är de vanliga bovarna och kan tas bort med följande:
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(ProductAlternateKey, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')))
Om du stöter på fler "white space"-tecken som inte kan tas bort med ovanstående, försök med ett eller alla av nedanstå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),'');
Den här listan med potentiella blanktecken kan användas för att skapa en funktion som :
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 sedan kan använda enligt följande:
Select
dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts