Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment supprimer les espaces blancs d'une chaîne dans SQL Server

Utilisation de ASCII(RIGHT(ProductAlternateKey, 1)) vous pouvez voir que le caractère le plus à droite de la ligne 2 est un saut de ligne ou un caractère Ascii 10.

Cela ne peut pas être supprimé à l'aide du LTrim standard RTrim fonctions.

Vous pouvez cependant utiliser (REPLACE(ProductAlternateKey, CHAR(10), '')

Vous pouvez également tenir compte des retours chariot et des tabulations. Ces trois (sauts de ligne, retours chariot et onglets) sont les coupables habituels et peuvent être supprimés avec ce qui suit :

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

Si vous rencontrez d'autres caractères "espaces blancs" qui ne peuvent pas être supprimés avec ce qui précède, essayez une ou toutes les solutions ci-dessous :

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

Cette liste d'espaces blancs potentiels pourrait être utilisée pour créer une fonction telle que :

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

Que vous pourriez ensuite utiliser comme suit :

Select 
    dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts