sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan fjerner du mellemrumstegn fra en streng i SQL Server

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
 


  1. Hvordan genererer man DELETE-sætninger i PL/SQL, baseret på tabellerne FK-relationer?

  2. Sådan bruges taltabellen i SELECT INTO-statment

  3. Sammenligning af værdiliste med tabel

  4. nodeJS returnerer værdi fra tilbagekald