删除后续空格和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