sql >> Databáze >  >> RDS >> Sqlserver

Jak odstranit prázdné znaky z řetězce na serveru SQL Server

Pomocí ASCII(RIGHT(ProductAlternateKey, 1)) můžete vidět, že znak nejvíce vpravo v řádku 2 je znak odřádkování nebo znak Ascii 10.

To nemůže odstranit pomocí standardního LTrim RTrim funkce.

Můžete však použít (REPLACE(ProductAlternateKey, CHAR(10), '')

Můžete také chtít započítat vratky vozíku a tabulátory. Tyto tři (odřádkování, návrat vozíku a tabulátory) jsou obvyklými viníky a lze je odstranit následujícím způsobem:

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

Pokud narazíte na další „prázdné znaky“, které nelze odstranit pomocí výše uvedeného, ​​zkuste jeden nebo všechny z níže uvedených:

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

Tento seznam potenciálních prázdných znaků lze použít k vytvoření funkce jako :

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

Který pak můžete použít následovně:

Select 
    dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts


  1. php, mysql server odešel

  2. Analýza sloupce MySQL pro extrahování dat

  3. Jaká je výchozí přesnost a měřítko pro číslo v Oracle?

  4. Chyba při načítání ovladače QMYSQL