从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"))