Eliminar espacios finales y actualizar en columnas en SQL Server

147

Tengo espacios finales en una columna en una tabla de SQL Server llamada Company Name.

Todos los datos en esta columna tienen espacios finales.

Quiero eliminar todos esos, y quiero tener los datos sin espacios finales.

El nombre de la compañía es como "Amit Tech Corp "

Quiero que el nombre de la compañía sea "Amit Tech Corp"

AGM Raja
fuente

Respuestas:

296

Tratar SELECT LTRIM(RTRIM('Amit Tech Corp '))

LTRIM - elimina los espacios iniciales del lado izquierdo de la cuerda

RTRIM - elimina cualquier espacio de la derecha

Ex:

update table set CompanyName = LTRIM(RTRIM(CompanyName))
rs.
fuente
12
Cabe señalar que TRIM ahora es un método compatible en SQL Server 2017+.
DJ Sipe
3
Estoy usando SQL Management Studio v17.8.1 y aunque obtengo Intellisense para la función TRIM, cuando lo ejecuto, dice que no es válido. Tuve que usar el código anterior. Extraño.
DesertFoxAZ
2
@DesertFoxAZ La versión de SQL Management Studio no es una versión de SQL Server
Jonatan Dragon
30

Para recortar los espacios finales, debe usar

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Sin embargo, si desea recortar todos los espacios iniciales y finales, utilice esto

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))
Día de robin
fuente
15

Bueno, aquí hay un buen script para RECORTAR todas las columnas varchar en una tabla dinámicamente:

--Just change table name
declare @MyTable varchar(100)
set @MyTable = 'MyTable'

--temp table to get column names and a row id
select column_name, ROW_NUMBER() OVER(ORDER BY column_name) as id into #tempcols from INFORMATION_SCHEMA.COLUMNS 
WHERE   DATA_TYPE IN ('varchar', 'nvarchar') and TABLE_NAME = @MyTable

declare @tri int
select @tri = count(*) from #tempcols
declare @i int
select @i = 0
declare @trimmer nvarchar(max)
declare @comma varchar(1)
set @comma = ', '

--Build Update query
select @trimmer = 'UPDATE [dbo].[' + @MyTable + '] SET '

WHILE @i <= @tri 
BEGIN

    IF (@i = @tri)
        BEGIN
        set @comma = ''
        END
    SELECT  @trimmer = @trimmer + CHAR(10)+ '[' + COLUMN_NAME + '] = LTRIM(RTRIM([' + COLUMN_NAME + ']))'+@comma
    FROM    #tempcols
    where id = @i

    select @i = @i+1
END

--execute the entire query
EXEC sp_executesql @trimmer

drop table #tempcols
Hiram
fuente
7
update MyTable set CompanyName = rtrim(CompanyName)
Christoffer Lette
fuente
2

Use la función TRIM SQL.

Si está utilizando SQL Server, intente:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable
Simón
fuente
2

SQL Server no admite la función Trim ().

Pero puede usar LTRIM () para eliminar espacios iniciales y RTRIM () para eliminar espacios finales.

puede usarlo como LTRIM (RTRIM (ColumnName)) para eliminar ambos.

update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))
Thilina Sandunsiri
fuente
2

Si está utilizando SQL Server (comenzando con vNext) o Azure SQL Database , puede usar la siguiente consulta.

SELECT TRIM(ColumnName) from TableName;

Para otras bases de datos SQL SERVER puede usar la consulta a continuación.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM: elimina espacios de la izquierda

ejemplo: select LTRIM(' test ') as trim='test '

RTRIM: elimina espacios de la derecha

ejemplo: select RTRIM(' test ') as trim=' test'

Sukanta Saha
fuente
0

Bueno, depende de qué versión de SQL Server esté usando.

En SQL Server 2008 r2, 2012 y 2014, simplemente puede usar TRIM(CompanyName)

Función TRIM de SQL Server

En otras versiones tienes que usar set CompanyName = LTRIM(RTRIM(CompanyName))

Daniel Urdaneta
fuente
3
El ajuste no está disponible de forma predeterminada, es una función DAX: msdn.microsoft.com/en-us/library/gg413422.aspx
Wouter
0

Ejemplo:

SELECT TRIM('   Sample   ');

Resultado: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)
pritam
fuente
3
SQL Server no es compatible con la función Trim (). Pero puede usar LTRIM () y RTRIM (). Si desea usar ambos juntos, puede usar LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri
Esta es una consulta de Oracle, OP está utilizando Microsoft SQL Server
Wouter
0
SELECT TRIM(ColumnName) FROM dual;
shevin
fuente
1
Esta es una consulta de Oracle, OP está utilizando Microsoft SQL Server
Wouter
0

Para eliminar Enter :

Update [table_name] set
[column_name]=Replace(REPLACE([column_name],CHAR(13),''),CHAR(10),'')

Para eliminar Tab :

Update [table_name] set
[column_name]=REPLACE([column_name],CHAR(9),'')
Pieter
fuente
0

Si también queremos manejar espacios en blanco y pestañas no deseadas,

Verifique y pruebe el siguiente script ( Unidad probada ):

--Declaring
DECLARE @Tbl TABLE(col_1 VARCHAR(100));

--Test Samples
INSERT INTO @Tbl (col_1)
VALUES
('  EY     y            
Salem')
, ('  EY     P    ort       Chennai   ')
, ('  EY     Old           Park   ')
, ('  EY   ')
, ('  EY   ')
,(''),(null),('d                           
    f');

SELECT col_1 AS INPUT,
    LTRIM(RTRIM(
    REPLACE(
    REPLACE(
    REPLACE(
    REPLACE(
    REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(col_1,CHAR(10),' ')
        ,CHAR(11),' ')
        ,CHAR(12),' ')
        ,CHAR(13),' ')
        ,CHAR(14),' ')
        ,CHAR(160),' ')
        ,CHAR(13)+CHAR(10),' ')
    ,CHAR(9),' ')
    ,' ',CHAR(17)+CHAR(18))
    ,CHAR(18)+CHAR(17),'')
    ,CHAR(17)+CHAR(18),' ')
    )) AS [OUTPUT]
FROM @Tbl;
Arulmouzhi
fuente