sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man tar bort blanktecken från en sträng i SQL Server

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


  1. Hur uppgraderar jag PostgreSQL från version 9.6 till version 10.1 utan att förlora data?

  2. MySQL går med i samma tabell två gånger i samma kolumn med olika värden som endast returnerar den senaste raden

  3. Hur man använder dj-database-url när man ansluter till postgresql i heroku med python

  4. Live-migreringar med MySQL-replikering