如何组合修剪和替换功能以删除字符串中的任何位置?

时间:2012-05-05 18:01:46

标签: sql sql-server-2008 tsql

我有这个函数(TRIM_REPLACE)从字符串的右边和左边获取空格。但是,我试图修改它,以便它在中间修剪,但我宁愿结合功能而不是单独进行。

示例:假设我有一个名字

Input
--------------------------
Peter<space><space>Griffin

<space>表示上述输入中有一个空格。

我想修剪一下额外的空间,看起来像这样:

Output
--------------------------
Peter<space>Griffin

正如您所看到的,多个空格被替换为单个空格。

CREATE FUNCTION dbo.TRIM_REPLACE
(
    @STRING     VARCHAR(MAX)
)
RETURNS VARCHAR(MAX)
    BEGIN
        RETURN LTRIM(RTRIM(@STRING))  + REPLACE(@STRING, '  ',' ')  
    END
GO

我如何做到这一点?

1 个答案:

答案 0 :(得分:9)

如果你只关心空格对,你可以使用。 。

ltrim(rtrim(replace(@String, '  ', ' ')))

如果您可能有多个空格,则需要将其置于循环中:

while charindex('  ', @string) > 0
begin
    set @string = replace(@string, '  ', ' ');
end;
return ltrim(rtrim(@string));