Usuń końcowe spacje i zaktualizuj w kolumnach w programie SQL Server

147

Mam końcowe spacje w kolumnie w tabeli programu SQL Server o nazwie Company Name.

Wszystkie dane w tej kolumnie mają końcowe spacje.

Chcę je wszystkie usunąć i chcę, aby dane nie zawierały żadnych spacji na końcu.

Nazwa firmy to "Amit Tech Corp "

Chcę, żeby nazwa firmy była "Amit Tech Corp"

AGM Raja
źródło

Odpowiedzi:

296

Próbować SELECT LTRIM(RTRIM('Amit Tech Corp '))

LTRIM - usuwa wszelkie początkowe spacje z lewej strony łańcucha

RTRIM - usuwa wszelkie spacje z prawej strony

Dawny:

update table set CompanyName = LTRIM(RTRIM(CompanyName))
rs.
źródło
12
Należy zauważyć, że TRIM jest teraz obsługiwaną metodą w SQL Server 2017+.
DJ Sipe
3
Używam SQL Management Studio w wersji 17.8.1 i chociaż otrzymuję Intellisense dla funkcji TRIM, kiedy ją wykonuję, mówi, że jest nieprawidłowy. Musiałem użyć powyższego kodu. Dziwne.
DesertFoxAZ
2
Wersja @DesertFoxAZ SQL Management Studio nie jest wersją programu SQL Server
Jonatan Dragon
30

Aby po prostu przyciąć spacje końcowe, należy użyć

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Jeśli jednak chcesz przyciąć wszystkie spacje wiodące i końcowe, użyj tego

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))
Robin Day
źródło
15

Cóż, tutaj jest fajny skrypt do dynamicznego PRZYCINANIA wszystkich kolumn varchar w tabeli:

--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
źródło
7
update MyTable set CompanyName = rtrim(CompanyName)
Christoffer Lette
źródło
2

Użyj funkcji TRIM SQL.

Jeśli używasz programu SQL Server, spróbuj:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable
Szymon
źródło
2

SQL Server nie obsługuje funkcji Trim ().

Ale możesz użyć LTRIM (), aby usunąć wiodące spacje i RTRIM (), aby usunąć końcowe spacje.

można go użyć jako LTRIM (RTRIM (ColumnName)), aby usunąć oba.

update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))
Thilina Sandunsiri
źródło
2

Jeśli używasz programu SQL Server (zaczynając od vNext) lub Azure SQL Database , możesz użyć poniższego zapytania.

SELECT TRIM(ColumnName) from TableName;

W przypadku innej bazy danych SQL SERVER możesz użyć poniższego zapytania.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - usuwa spacje z lewej strony

przykład: select LTRIM(' test ') as trim='test '

RTRIM - usuwa spacje z prawej strony

przykład: select RTRIM(' test ') as trim=' test'

Sukanta Saha
źródło
0

Cóż, to zależy od używanej wersji SQL Server.

W SQL Server 2008 R2, 2012 i 2014 możesz po prostu użyć TRIM(CompanyName)

Funkcja SQL Server TRIM

W innych wersjach musisz użyć set CompanyName = LTRIM(RTRIM(CompanyName))

Daniel Urdaneta
źródło
3
Przycinanie nie jest domyślnie dostępne, jest to funkcja języka
Wouter
0

Przykład:

SELECT TRIM('   Sample   ');

Wynik: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)
pritam
źródło
3
SQL Server nie obsługuje funkcji Trim (). Ale możesz użyć LTRIM () i RTRIM (). Jeśli chcesz używać obu razem, możesz użyć LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri,
To jest zapytanie Oracle, OP używa Microsoft SQL Server
Wouter
0
SELECT TRIM(ColumnName) FROM dual;
Shevin
źródło
1
To jest zapytanie Oracle, OP używa Microsoft SQL Server
Wouter
0

Aby usunąć Enter :

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

Aby usunąć kartę :

Update [table_name] set
[column_name]=REPLACE([column_name],CHAR(9),'')
Pieter
źródło
0

Jeśli chcemy również obsługiwać spacje i niechciane tabulatory,

Sprawdź i wypróbuj poniższy skrypt ( przetestowany jednostkowo ) -

--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
źródło