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"

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

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

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


2

Utilisez la fonction TRIM SQL.

Si vous utilisez SQL Server, essayez:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable

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

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'




0

Exemple:

SELECT TRIM('   Sample   ');

Résultat: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)

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;

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

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;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.