TSQL替换双字符

时间:2016-02-18 08:29:12

标签: tsql replace sql-server-2014

我们说我有数据:

heloo
cuube
triniity

如何编写将替换那些"加倍"的脚本只有一个人物?因此,上述数据集的结果将是:

helo
cube
trinity

通常我发布了一些我尝试实现此目的的脚本,但这次我无法想到。

2 个答案:

答案 0 :(得分:1)

这应该有效:

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

答案 1 :(得分:0)

此脚本不依赖于对主函数的访问,而只依赖于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