TSQL 替换双字符

TSQL Replace Doubled Characters

假设我有数据:

heloo
cuube
triniity

如何编写将 "doubled" 个字符替换为一个字符的脚本?所以上述数据集的结果将是:

helo
cube
trinity

通常我 post 尝试实现此目的的一些脚本,但这次我想不出任何脚本。

这应该有效:

CREATE PROCEDURE remove_duplicate_characters(@string VARCHAR(100)) 
AS
DECLARE @result VARCHAR(100) 

SET @result=''
SELECT @result=@result+MIN(SUBSTRING(@string ,number,1)) FROM
(     
    SELECT number FROM master..spt_values WHERE type='p' AND number BETWEEN 1 AND len(@string )) AS t GROUP BY SUBSTRING(@string,number,1) ORDER BY MIN(number)
)

SELECT @result  
GO

然后你可以这样称呼它:

EXEC remove_duplicate_characters 'heloo'

Source

此脚本不依赖于对主函数的访问,仅依赖于 t-sql 字符串函数。

declare @word varchar(100) = 'aaaacuuuuuubeeeee', @result varchar(100) = ''
declare @letter char, @idx int = 0, @lastletter char = ''

while(@idx <= len(@word))
begin
    select @letter = substring(@word,@idx,1)
    if (@letter != @lastletter)
    begin
        select @result = concat(@result,@letter)
    end
    select @lastletter = @letter,@idx = @idx + 1
end

select @result