在SQL Server 2008中删除字符串中的所有空格的最佳方法是什么?

LTRIM(RTRIM(' a b '))将删除字符串右侧和左侧的所有空格,但我还需要删除中间的空格。


当前回答

100%的工作

UPDATE table_name SET  "column_name"=replace("column_name", ' ', ''); //Remove white space

UPDATE table_name SET  "column_name"=replace("column_name", '\n', ''); //Remove newline

UPDATE table_name SET  "column_name"=replace("column_name", '\t', ''); //Remove all tab

可以使用“column_name”或“column_name”

谢谢

Subroto

其他回答

replace(replace(column_Name,CHAR(13),''),CHAR(10),'')

取代()函数:

REPLACE(field, ' ', '')

如果字符串中有多个空格,则replace可能无法正常工作。为此,应该使用下面的函数。

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

为了使以上所有的答案完整,在StackOverflow上有关于如何处理所有空白字符的额外帖子(请参阅https://en.wikipedia.org/wiki/Whitespace_character获取这些字符的完整列表):

TSQL 2008使用LTrim(RTrim和仍然有空间的数据 如何从SQL server中的列中删除非间断空格? 在没有UDF和CLR的T-SQL中,从字符串中修剪所有空白字符的好方法是什么?

从左到右删除字符串中的空格。要消除中间空间,请使用Replace。

您可以使用RTRIM()从右边删除空格,使用LTRIM()从左边删除空格,因此左右空格被删除如下:

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