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

147

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

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

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

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

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

AGM Раджа
источник

Ответы:

296

Пытаться SELECT LTRIM(RTRIM('Amit Tech Corp '))

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

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

Пример:

update table set CompanyName = LTRIM(RTRIM(CompanyName))
RS.
источник
12
Следует отметить, что TRIM теперь поддерживается в SQL Server 2017+.
DJ Sipe
3
Я использую SQL Management Studio v17.8.1 и, хотя я получаю Intellisense для функции TRIM, когда я ее выполняю, он говорит, что она недействительна. Я должен был использовать код выше. Weird.
DesertFoxAZ
2
@DesertFoxAZ Версия SQL Management Studio не является версией SQL Server
Джонатан Дракон
30

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

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

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

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))
Робин Дэй
источник
15

Хорошо, вот хороший скрипт для динамической обработки всех столбцов 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
Хирам
источник
7
update MyTable set CompanyName = rtrim(CompanyName)
Кристоффер Летт
источник
2

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

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

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable
Саймон
источник
2

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

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

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

update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))
Тилина Сандунсири
источник
2

Если вы используете 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'

Суканта Саха
источник
0

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

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

Функция SQL Server TRIM

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

Даниэль Урданета
источник
3
По умолчанию обрезка
Wouter
0

Пример:

SELECT TRIM('   Sample   ');

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

UPDATE TableName SET ColumnName = TRIM(ColumnName)
Pritam
источник
3
SQL Server не поддерживается для функции Trim (). Но вы можете использовать LTRIM () и RTRIM (). Если вы хотите использовать оба вместе, вы можете использовать LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri
Это запрос Oracle, OP использует Microsoft SQL Server
Wouter
0
SELECT TRIM(ColumnName) FROM dual;
shevin
источник
1
Это запрос Oracle, OP использует Microsoft SQL Server
Wouter
0

Чтобы удалить 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),'')
Pieter
источник
0

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

Проверьте и попробуйте следующий скрипт ( модульное тестирование ) -

--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
источник