在SQL Server 2008中删除字符串中的所有空格的最佳方法是什么?
LTRIM(RTRIM(' a b '))将删除字符串右侧和左侧的所有空格,但我还需要删除中间的空格。
在SQL Server 2008中删除字符串中的所有空格的最佳方法是什么?
LTRIM(RTRIM(' a b '))将删除字符串右侧和左侧的所有空格,但我还需要删除中间的空格。
当前回答
只是一个提示,以防您在使用replace函数时遇到麻烦,您可能会将数据类型设置为nchar(在这种情况下,它是一个固定的长度,它将不起作用)。
其他回答
如果是对表的更新,则必须多次运行此更新,直到影响到0行为止。
update tableName
set colName = REPLACE(LTRIM(RTRIM(colName)), ' ', ' ')
where colName like '% %'
如果字符串中有多个空格,则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
只是一个提示,以防您在使用replace函数时遇到麻烦,您可能会将数据类型设置为nchar(在这种情况下,它是一个固定的长度,它将不起作用)。
如果你想从字符串中删除空格,-和另一个文本,那么使用以下命令:
假设您的表格中有一个手机号码,如“718-378-4957”或 ' 7183784957',你想要替换并获得手机号码,然后使用下面的文本。
select replace(replace(replace(replace(MobileNo,'-',''),'(',''),')',''),' ','') from EmployeeContactNumber
结果:——7183784957
取代()函数:
REPLACE(field, ' ', '')