169 votes

Suppression des espaces de fin de ligne et mise à jour des colonnes dans SQL Server

J'ai des espaces de fin dans une colonne d'une table SQL Server appelée Company Name .

Toutes les données de cette colonne comportent des espaces à la fin.

Je veux supprimer tous ces éléments, et je veux que les données ne comportent pas d'espace à la fin.

Le nom de la société est comme "Amit Tech Corp "

Je veux que le nom de la société soit "Amit Tech Corp"

340voto

rs. Points 11670

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

LTRIM - supprime tout espace de tête du côté gauche de la chaîne de caractères

RTRIM - supprime tout espace à droite

Ex :

update table set CompanyName = LTRIM(RTRIM(CompanyName))

34voto

Robin Day Points 39440

Pour couper uniquement les espaces de fin de ligne, vous devez utiliser

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Cependant, si vous voulez couper tous les espaces avant et après, utilisez ceci

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))

16voto

sqiller Points 581

Eh bien voici un script sympathique pour TRIM toutes les colonnes varchar sur une table dynamiquement :

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

16voto

Le serveur SQL ne prend pas en charge la fonction Trim().

Mais vous pouvez utiliser LTRIM() pour supprimer les espaces avant et RTRIM() pour supprimer les espaces arrière.

peut l'utiliser comme LTRIM(RTRIM(ColumnName)) pour supprimer les deux.

update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))

Mise à jour : 2022

J'avais répondu à cette question il y a 7 ans(en 2015). A l'époque, il n'y avait pas de fonction directe pour l'élagage dans le serveur SQL.

Mais à partir de SQL Server 2017, ils ont introduit le Trim() fonction.

Ainsi, toute personne qui utilise SQL Server 2017 ou une version ultérieure, peut facilement faire la même chose que ci-dessous.

update tablename
set ColumnName= TRIM(ColumnName)

Cependant, si vous utilisez une version plus ancienne, vous devrez toujours utiliser la méthode que j'ai mentionnée il y a 7 ans.

7voto

Christoffer Lette Points 4739
update MyTable set CompanyName = rtrim(CompanyName)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X