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

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


当前回答

由于某种原因,replace每次只对一个字符串起作用。 我有一个像这样的字符串“Test MSP”,我想只留下一个空格。

我使用了@Farhan的方法,但做了一些修改:

CREATE FUNCTION ReplaceAll
(
    @OriginalString varchar(8000),
    @StringToRemove varchar(20),
    @StringToPutInPlace varchar(20)
)
RETURNS varchar(8000)
AS
BEGIN
declare @ResultStr varchar(8000)
set @ResultStr = @OriginalString
while charindex(@StringToRemove, @ResultStr) > 0
    set @ResultStr = replace(@ResultStr, @StringToRemove, @StringToPutInPlace)

return @ResultStr
END

然后像这样运行更新

UPDATE tbTest SET Description = dbo.ReplaceAll(Description, '  ', ' ') WHERE ID = 14225

然后我得到了这个结果: 测试MSP

张贴在这里,如果有人需要它,就像我一样。

上运行: Microsoft SQL Server 2016 (SP2)

其他回答

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

我今天遇到了这个问题,替换/修剪成功了,见下文。

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' 

T-sql replace http://msdn.microsoft.com/en-us/library/ms186862.aspx

代表(val, ', ', ')

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

替换特定字符的语法:

REPLACE ( string_expression , string_pattern , string_replacement )  

例如,在字符串“HelloReplaceThingsGoing”中,替换词被How替换

SELECT REPLACE('HelloReplaceThingsGoing','Replace','How');
GO