删除SQL Server中的列中的尾随空格和更新

AGM*_*aja 129 sql sql-server-2008 trailing

我在一个名为的SQL Server表的列中有尾随空格Company Name.

此列中的所有数据都有尾随空格.

我想删除所有这些,我想拥有没有任何尾随空格的数据.

公司名称就像 "Amit Tech Corp "

我想要公司名称 "Amit Tech Corp"

rs.*_*rs. 271

尝试 SELECT LTRIM(RTRIM('Amit Tech Corp '))

LTRIM - 从字符串的左侧删除任何前导空格

RTRIM - 从右边删除任何空格

例如:

update table set CompanyName = LTRIM(RTRIM(CompanyName))
Run Code Online (Sandbox Code Playgroud)

  • 应该注意的是,[TRIM](https://docs.microsoft.com/en-us/sql/t-sql/functions/trim-transact-sql)现在是SQL Server 2017+中支持的方法. (11认同)
  • 我正在使用SQL Management Studio v17.8.1,当我为TRIM函数获取Intellisense时,执行该函数时,它表示无效。我不得不使用上面的代码。奇怪的。 (3认同)
  • @DesertFoxAZ SQL Management Studio版本不是SQL Server的版本 (2认同)

Rob*_*Day 29

要修剪尾随空格,你应该使用

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)
Run Code Online (Sandbox Code Playgroud)

但是,如果要修剪所有前导和尾随空格,请使用此选项

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))
Run Code Online (Sandbox Code Playgroud)


小智 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
Run Code Online (Sandbox Code Playgroud)


小智 9

SQL Server 不支持 Trim() 函数。

但是您可以使用 LTRIM() 删除前导空格和 RTRIM() 删除尾随空格。

可以将其用作 LTRIM(RTRIM(ColumnName)) 来删除两者。

update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))
Run Code Online (Sandbox Code Playgroud)


Chr*_*tte 7

update MyTable set CompanyName = rtrim(CompanyName)
Run Code Online (Sandbox Code Playgroud)