删除后续空格和SQL Server中的列中的更新

我在名为Company Name的SQL Server表中的列中有空格。

该列中的所有数据都有尾随空格。

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

公司名称就像"Amit Tech Corp "

我希望公司名称是"Amit Tech Corp"

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

LTRIM – 从string的左侧移除任何前导空格

RTRIM – 从右侧移除任何空格

例如:

 update table set CompanyName = LTRIM(RTRIM(CompanyName)) 

只是修剪你应该使用的尾随空格

 UPDATE TableName SET ColumnName = RTRIM(ColumnName) 

但是,如果你想修剪所有的前导和尾随空格,那么使用这个

 UPDATE TableName SET ColumnName = LTRIM(RTRIM(ColumnName)) 

那么这里是一个很好的脚本来dynamic修改表上的所有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 
 update MyTable set CompanyName = rtrim(CompanyName) 

使用TRIM SQL函数。

如果您正在使用SQL Server,请尝试:

 SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable 

如果您正在使用SQL Server(从vNext开始)Azure SQL数据库,则可以使用下面的查询。

 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'

那么,这取决于你正在使用哪个版本的SQL Server。

在SQL Server 2008 R2,2012和2014中,您可以简单地使用TRIM(CompanyName)

SQL Server TRIM函数

在其他版本中,您必须使用set CompanyName = LTRIM(RTRIM(CompanyName))

SQL Server不支持Trim()函数。

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

可以使用它作为LTRIM(RTRIM(ColumnName))来删除这两个。

 update tablename set ColumnName= LTRIM(RTRIM(ColumnName)) 

使用ETL从excel文件中提取数据后,我遇到了同样的问题,最后我发现解决scheme:

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

希望能帮助到你 ;)

SELECT TRIM(ColumnName)FROM dual;

例:

 SELECT TRIM(' Sample '); 

结果: 'Sample'

 UPDATE TableName SET ColumnName = TRIM(ColumnName) 

删除所有空间的最佳方法是SELECT REPLACE(“Amit Tech Corp”,“','')

而不是LTRIM和RTRIM

    Interesting Posts