Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak usunąć białe znaki z ciągu znaków w SQL Server

Używanie ASCII(RIGHT(ProductAlternateKey, 1)) widać, że najbardziej po prawej stronie w wierszu 2 jest znak końca linii lub znak ASCII 10.

To nie może usunąć za pomocą standardowego LTrim RTrim funkcje.

Możesz jednak użyć (REPLACE(ProductAlternateKey, CHAR(10), '')

Możesz również uwzględnić zwroty karetki i tabulatory. Te trzy elementy (wysuwy wiersza, powrót karetki i tabulatory) są zwykłymi winowajcami i można je usunąć w następujący sposób:

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

Jeśli napotkasz więcej „białych znaków”, których nie można usunąć za pomocą powyższego, wypróbuj jedną lub wszystkie z poniższych:

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

Ta lista potencjalnych znaków odstępu może zostać wykorzystana do utworzenia funkcji, takiej jak :

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

Które następnie możesz użyć w następujący sposób:

Select 
    dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Scal zduplikowane rekordy czasowe w bazie danych

  2. Sprawdzanie ograniczeń:TRY/CATCH vs Exists()

  3. SQL Server:Przykłady danych ciągu PIVOTing

  4. Jaka jest alternatywa dla kursorów dla pętli SQL?

  5. Jak dodać kolumnę tożsamości do istniejącej tabeli bazy danych, która ma dużą liczbę wierszy?