sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo eliminar los caracteres de espacio en blanco de una cadena en SQL Server

Usando ASCII(RIGHT(ProductAlternateKey, 1)) puede ver que el carácter más a la derecha en la fila 2 es un avance de línea o un carácter Ascii 10.

Esto no puede eliminarse usando el estándar LTrim RTrim funciones.

Sin embargo, podría usar (REPLACE(ProductAlternateKey, CHAR(10), '')

También es posible que desee tener en cuenta los retornos de carro y las tabulaciones. Estos tres (saltos de línea, retornos de carro y tabulaciones) son los culpables habituales y se pueden eliminar con lo siguiente:

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

Si encuentra más caracteres de "espacio en blanco" que no se pueden eliminar con lo anterior, intente uno o todos los siguientes:

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

Esta lista de posibles espacios en blanco podría usarse para crear una función como:

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 luego podría usar de la siguiente manera:

Select 
    dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts