2

我有这个函数(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

我该如何做到这一点?

4

1 回答 1

9

如果您只关心成对的空格,您可以使用 . . .

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

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

while charindex('  ', @string) > 0
begin
    set @string = replace(@string, '  ', ' ');
end;
return ltrim(rtrim(@string));
于 2012-05-05T18:05:34.190 回答