Удалить конечные пробелы и обновить столбцы в SQL Server

У меня есть конечные пробелы в столбце таблицы SQL Server с именем Company Name.

Все данные в этом столбце заканчиваются пробелами.

Я хочу удалить все это и хочу, чтобы данные были без пробелов в конце.

Название компании похоже на "Amit Tech Corp "

Я хочу, чтобы название компании было "Amit Tech Corp"


person AGM Raja    schedule 08.02.2013    source источник


Ответы (12)


Попробуйте SELECT LTRIM(RTRIM('Amit Tech Corp '))

LTRIM — удаляет все начальные пробелы из левая сторона строки

RTRIM — удаляет все пробелы справа

Ex:

update table set CompanyName = LTRIM(RTRIM(CompanyName))
person rs.    schedule 08.02.2013
comment
Следует отметить, что TRIM теперь является поддерживаемым методом в SQL Server 2017+. - person DJ Sipe; 16.02.2018
comment
Я использую SQL Management Studio v17.8.1, и хотя я получаю Intellisense для функции TRIM, когда я ее выполняю, она говорит, что она недействительна. Мне пришлось использовать код выше. Странный. - person DesertFoxAZ; 02.11.2018
comment
@DesertFoxAZ Версия SQL Management Studio не является версией SQL Server - person Jonatan Dragon; 25.01.2019

Чтобы просто обрезать конечные пробелы, вы должны использовать

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Однако, если вы хотите обрезать все начальные и конечные пробелы, используйте этот

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))
person Robin Day    schedule 08.02.2013

Вот хороший скрипт для динамического TRIM всех столбцов varchar в таблице:

--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
person Hiram    schedule 07.03.2014

SQL Server не поддерживает функцию Trim().

Но вы можете использовать LTRIM() для удаления пробелов в начале и RTRIM() для удаления пробелов в конце.

можно использовать как LTRIM(RTRIM(ColumnName)) для удаления обоих.

update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))
person Thilina Sandunsiri    schedule 14.12.2015

Используйте функцию SQL TRIM.

Если вы используете SQL Server, попробуйте:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable
person Simon    schedule 08.02.2013

Если вы используете SQL Server (начиная с vNext) или базу данных SQL Azure, вы можете использовать приведенный ниже запрос.

SELECT TRIM(ColumnName) from TableName;

Для другой базы данных SQL SERVER вы можете использовать приведенный ниже запрос.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - Удаляет пробелы слева

пример: select LTRIM(' test ') as trim = 'test '

RTRIM - Удаляет пробелы справа

пример: select RTRIM(' test ') as trim = ' test'

person Sukanta Saha    schedule 20.03.2017

У меня была такая же проблема после извлечения данных из файла excel с использованием ETL, и, наконец, я нашел там решение:

https://www.codeproject.com/Tips/330787/LTRIM-RTRIM-doesn-t-always-work

Надеюсь, поможет ;)

person Salim Lyoussi    schedule 13.05.2017

Если мы также хотим обрабатывать пробелы и нежелательные вкладки-

Проверьте и попробуйте приведенный ниже сценарий (модульное тестирование) —

--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;
person Arulmouzhi    schedule 18.01.2020

Ну, это зависит от того, какую версию SQL Server вы используете.

В SQL Server 2008 r2, 2012 и 2014 вы можете просто использовать TRIM(CompanyName)

Функция TRIM SQL Server

В других версиях вы должны использовать set CompanyName = LTRIM(RTRIM(CompanyName))

person Daniel Urdaneta    schedule 16.04.2015
comment
Обрезка по умолчанию недоступна, это функция DAX: msdn.microsoft.com/ en-us/library/gg413422.aspx - person Wouter; 02.09.2016
comment
TRIM() доступен из SQL2017 docs.microsoft. com/en-us/sql/t-sql/functions/trim-transact-sql (и имеет возможность удалить символы, кроме ПРОБЕЛА) - person Kristen; 06.01.2021

Пример:

SELECT TRIM('   Sample   ');

Результат: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)
person pritam    schedule 29.10.2015
comment
SQL Server не поддерживает функцию Trim(). Но вы можете использовать LTRIM() и RTRIM(). Если вы хотите использовать оба вместе, вы можете использовать LTRIM(RTRIM(ColumnName)) - person Thilina Sandunsiri; 14.12.2015
comment
Это запрос Oracle, OP использует Microsoft SQL Server. - person Wouter; 02.09.2016

Чтобы удалить Enter:

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

Чтобы удалить вкладку:

Update [table_name] set
[column_name]=REPLACE([column_name],CHAR(9),'')
person Pieter    schedule 01.10.2018

person    schedule
comment
Это запрос Oracle, OP использует Microsoft SQL Server. - person Wouter; 02.09.2016