Remover espaços à direita e atualizar em colunas no SQL Server

147

Tenho espaços à direita em uma coluna em uma tabela do SQL Server chamada Company Name.

Todos os dados nesta coluna têm espaços à direita.

Quero remover tudo isso e quero ter os dados sem espaços à direita.

O nome da empresa é como "Amit Tech Corp "

Quero que o nome da empresa seja "Amit Tech Corp"

AGM Raja
fonte

Respostas:

296

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

LTRIM - remove todos os espaços à esquerda do lado esquerdo da corda

RTRIM - remove todos os espaços da direita

Ex:

update table set CompanyName = LTRIM(RTRIM(CompanyName))
rs.
fonte
12
Observe que o TRIM agora é um método suportado no SQL Server 2017+.
DJ Sipe
3
Estou usando o SQL Management Studio v17.8.1 e, enquanto obtenho o Intellisense para a função TRIM, quando executá-lo, ele diz que não é válido. Eu tive que usar o código acima. Esquisito.
DesertFoxAZ
2
@DesertFoxAZ A versão do SQL Management Studio não é uma versão do SQL Server
Jonatan Dragon
30

Para aparar apenas os espaços finais, você deve usar

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

No entanto, se você deseja cortar todos os espaços à esquerda e à direita, use este

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))
Robin Day
fonte
15

Bem, aqui está um bom script para TRIM todas as colunas varchar em uma tabela dinamicamente:

--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
fonte
7
update MyTable set CompanyName = rtrim(CompanyName)
Christoffer Lette
fonte
2

Use a função TRIM SQL.

Se você estiver usando o SQL Server, tente:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable
Simon
fonte
2

O SQL Server não suporta a função Trim ().

Mas você pode usar LTRIM () para remover espaços à esquerda e RTRIM () para remover espaços à direita.

pode usá-lo como LTRIM (RTRIM (ColumnName)) para remover os dois.

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

Se você estiver usando o SQL Server (começando com vNext) ou o Banco de Dados SQL do Azure , poderá usar a consulta abaixo.

SELECT TRIM(ColumnName) from TableName;

Para outro banco de dados SQL SERVER, você pode usar a consulta abaixo.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - Remove espaços da esquerda

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

RTRIM - Remove espaços da direita

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

Sukanta Saha
fonte
0

Bem, depende de qual versão do SQL Server você está usando.

No SQL Server 2008 r2, 2012 e 2014, você pode simplesmente usar TRIM(CompanyName)

Função TRIM do SQL Server

Em outras versões você tem que usar set CompanyName = LTRIM(RTRIM(CompanyName))

Daniel Urdaneta
fonte
3
Aparar não está disponível por padrão, é um recurso DAX: msdn.microsoft.com/en-us/library/gg413422.aspx
Wouter
0

Exemplo:

SELECT TRIM('   Sample   ');

Resultado: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)
pritam
fonte
3
O SQL Server não oferece suporte à função Trim (). Mas você pode usar LTRIM () e RTRIM (). Se você quiser usar os dois juntos, poderá usar LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri
Esta é uma consulta Oracle, OP está usando o Microsoft SQL Server
Wouter
0
SELECT TRIM(ColumnName) FROM dual;
shevin
fonte
1
Esta é uma consulta Oracle, OP está usando o Microsoft SQL Server
Wouter
0

Para remover Enter :

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

Para remover a guia :

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

Se também queremos lidar com espaços em branco e guias indesejadas,

Verifique e experimente o script abaixo ( unidade testada ) -

--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
fonte