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'
此脚本不依赖于对主函数的访问,仅依赖于 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
假设我有数据:
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'
此脚本不依赖于对主函数的访问,仅依赖于 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