Supprimer les espaces de fin et mettre à jour dans les colonnes dans SQL Server

147

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

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

Je veux supprimer tous ceux-ci, et je veux avoir les données sans espaces de fin.

Le nom de l'entreprise est comme "Amit Tech Corp "

Je veux que le nom de l'entreprise soit "Amit Tech Corp"

AGA Raja
la source

Réponses:

296

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

LTRIM - supprime tous les espaces de début du côté gauche de la chaîne

RTRIM - supprime tous les espaces de droite

Ex:

update table set CompanyName = LTRIM(RTRIM(CompanyName))
rs.
la source
12
Il convient de noter que TRIM est désormais une méthode prise en charge dans SQL Server 2017+.
DJ Sipe
3
J'utilise SQL Management Studio v17.8.1 et bien que j'obtienne Intellisense pour la fonction TRIM, lorsque je l'exécute, cela indique qu'il n'est pas valide. J'ai dû utiliser le code ci-dessus. Bizarre.
DesertFoxAZ
2
@DesertFoxAZ La version SQL Management Studio n'est pas la version de SQL Server
Jonatan Dragon
30

Pour simplement couper les espaces de fin, vous devez utiliser

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Cependant, si vous souhaitez supprimer tous les espaces de début et de fin, utilisez cette

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))
Jour de Robin
la source
15

Eh bien, voici un joli script pour TRIM toutes les colonnes varchar sur une table de manière dynamique:

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

Utilisez la fonction TRIM SQL.

Si vous utilisez SQL Server, essayez:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable
Simon
la source
2

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

Mais vous pouvez utiliser LTRIM () pour supprimer les espaces de début et RTRIM () pour supprimer les espaces de fin.

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

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

Si vous utilisez SQL Server (en commençant par vNext) ou Azure SQL Database, vous pouvez utiliser la requête ci-dessous.

SELECT TRIM(ColumnName) from TableName;

Pour les autres bases de données SQL SERVER, vous pouvez utiliser la requête ci-dessous.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - Supprime les espaces de la gauche

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

RTRIM - Supprime les espaces de la droite

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

Sukanta Saha
la source
0

Eh bien, cela dépend de la version de SQL Server que vous utilisez.

Dans SQL Server 2008 r2, 2012 et 2014, vous pouvez simplement utiliser TRIM(CompanyName)

Fonction TRIM de SQL Server

Dans les autres versions, vous devez utiliser set CompanyName = LTRIM(RTRIM(CompanyName))

Daniel Urdaneta
la source
3
Trim n'est pas disponible par défaut, c'est une fonctionnalité DAX: msdn.microsoft.com/en-us/library/gg413422.aspx
Wouter
0

Exemple:

SELECT TRIM('   Sample   ');

Résultat: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)
pritam
la source
3
SQL Server n'est pas pris en charge pour la fonction Trim (). Mais vous pouvez utiliser LTRIM () et RTRIM (). Si vous souhaitez utiliser les deux ensemble, vous pouvez utiliser LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri
Ceci est une requête Oracle, OP utilise Microsoft SQL Server
Wouter
0
SELECT TRIM(ColumnName) FROM dual;
Shevin
la source
1
Ceci est une requête Oracle, OP utilise Microsoft SQL Server
Wouter
0

Pour supprimer Enter :

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

Pour supprimer l' onglet :

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

Si nous voulons également gérer les espaces blancs et les onglets indésirables-

Vérifiez et essayez le script ci-dessous ( Testé à l'unité ) -

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