从SQL Server中的string中删除所有空格

从SQL Server 2008中的string中删除所有空格的最佳方法是什么?

LTRIM(RTRIM('ab')将删除string右侧和左侧的所有空格,但是我也需要删除中间的空格。

只需更换它;

SELECT REPLACE(fld_or_variable, ' ', '') 

编辑只是为了澄清; 其全局replace,没有必要trim()或担心多个空格:

 create table #t (c char(8), v varchar(8)) insert #t (c, v) values ('aa' , 'aa' ), ('aa ' , 'aa ' ), (' aa' , ' aa' ), (' aa ', ' aa ') select '''' + c + '''' [IN], '''' + replace(c, ' ', '') + '''' [OUT] from #t union all select '''' + v + '''', '''' + replace(v, ' ', '') + '''' from #t IN OUT 'aa ' 'aa' 'aa ' 'aa' ' aa ' 'aa' ' aa ' 'aa' 'aa' 'aa' 'aa ' 'aa' ' aa' 'aa' ' aa ' 'aa' 

我会使用REPLACE

 select REPLACE (' Hello , How Are You ?', ' ', '' ) 

更换

如果它是一个表上的更新,您只需要多次运行此更新,直到它影响0行。

 update tableName set colName = REPLACE(LTRIM(RTRIM(colName)), ' ', ' ') where colName like '% %' 

REPLACE()函数 :

 REPLACE(field, ' ', '') 

t-sqlreplacehttp://msdn.microsoft.com/en-us/library/ms186862.aspx

replace(val,'','')

从这个博客引用:

首先,创build示例表和数据:

 CREATE TABLE tbl_RemoveExtraSpaces ( Rno INT ,Name VARCHAR(100) ) GO INSERT INTO tbl_RemoveExtraSpaces VALUES (1,'I am Anvesh Patel') INSERT INTO tbl_RemoveExtraSpaces VALUES (2,'Database Research and Development ') INSERT INTO tbl_RemoveExtraSpaces VALUES (3,'Database Administrator ') INSERT INTO tbl_RemoveExtraSpaces VALUES (4,'Learning BIGDATA and NOSQL ') GO 

select没有额外空间的string的脚本:

 SELECT [Rno] ,[Name] AS StringWithSpace ,LTRIM(RTRIM(REPLACE(REPLACE(REPLACE([Name],CHAR(32),'()'),')(',''),'()',CHAR(32)))) AS StringWithoutSpace FROM tbl_RemoveExtraSpaces 

结果:

 Rno StringWithSpace StringWithoutSpace ----------- ----------------------------------------- --------------------------------------------- 1 I am Anvesh Patel I am Anvesh Patel 2 Database Research and Development Database Research and Development 3 Database Administrator Database Administrator 4 Learning BIGDATA and NOSQL Learning BIGDATA and NOSQL 

如果string中有多个空格,则replace可能无法正常工作。 为此,应使用以下function。

 CREATE FUNCTION RemoveAllSpaces ( @InputStr varchar(8000) ) RETURNS varchar(8000) AS BEGIN declare @ResultStr varchar(8000) set @ResultStr = @InputStr while charindex(' ', @ResultStr) > 0 set @ResultStr = replace(@InputStr, ' ', '') return @ResultStr END 

例:

 select dbo.RemoveAllSpaces('aa aaa aa aa a') 

输出:

 aaaaaaaaaa 

100%的工作

UPDATE table_name SET column_name = replace( column_name ,'','')//删除空格

UPDATE table_name SET column_name = replace( column_name ,'\ n','')//删除换行符

UPDATE table_name SET column_name = replace( column_name ,'\ t','')//删除所有选项卡

您可以使用column_name或column_name

谢谢Subroto

这是删除string上的空格的技巧:

 UPDATE tablename SET colunmname = replace(colunmname, ' ', ''); 

以防万一您需要在所有列中填充TRIM空格,您可以使用此脚本dynamic执行此操作:

 --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 

如果你想删除空格, – 和string中的另一个文本,然后使用以下内容:

假设你的表中有一个像“718-378-4957”或“7183784957”这样的手机号码,你需要replace并获得手机号码,然后使用下面的文本。

 select replace(replace(replace(replace(MobileNo,'-',''),'(',''),')',''),' ','') from EmployeeContactNumber 

结果: – 7183784957

我今天有这个问题,并取代/修剪做的伎俩..见下文。

 update table_foo set column_bar = REPLACE(LTRIM(RTRIM(column_bar)), ' ', '') 

之前和之后 :

 old-bad: column_bar | New-fixed: column_bar ' xyz ' | 'xyz' ' xyz ' | 'xyz' ' xyz ' | 'xyz' ' xyz ' | 'xyz' ' xyz ' | 'xyz' ' xyz ' | 'xyz' 

只是一个提示,如果您遇到了replace函数的问题,您可能会将数据types设置为nchar(在这种情况下,它是一个固定的长度,它不会工作)。

删除左右string中的空格。 在中间使用Replace删除空间。

您可以使用RTRIM()从右侧删除空格,并使用LTRIM()从左侧删除空格,因此左右空格将被删除,如下所示:

 SELECT * FROM table WHERE LTRIM(RTRIM(username)) = LTRIM(RTRIM("Bob alias baby"))