昨天写了一个【字符串排序】,感觉有点挫

decamincow 2013-11-06 09:20:42
declare @a int, @b int, @c int, @d varchar(max), @e varchar(max), @f varchar(max)
set @a=1
set @b=1
set @d='bbdgegpoakfoa'
set @c=LEN(@d)
set @e=SUBSTRING(@d,1,1)
set @f=''
while @b<@c
begin
while @a<LEN(@d)
begin
if @e>SUBSTRING(@d,@a,1)
set @e=SUBSTRING(@d,@a,1)
set @a=@a+1
end
set @d=stuff(@d,charindex(@e,@d,1),1,'')
set @a=1
set @b=@b+1
set @f=@f+@e
set @e=SUBSTRING(@d,1,1)
end
print @f

有更好的方法吗
...全文
62 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2013-11-06
  • 打赏
  • 举报
回复

declare @a int,@d varchar(max),@f varchar(max)
declare @x table(v varchar(1))

set @d='bbdgegpoakfoa'

select @a=1

while(@a<=len(@d))
begin
 insert into @x(v) values(substring(@d,@a,1))
 select @a=@a+1
end

select @f=isnull(@f,'')+v from @x order by v

select @f 'f'

/*
f
-------------------------
aabbdefggkoop

(1 row(s) affected)
*/
Andy__Huang 2013-11-06
  • 打赏
  • 举报
回复
set nocount on
declare @table table(val char(1))
declare @s varchar(8000),@i int
set @s='bbdgegpoakfoa'
set @i=1
while @i<=LEN(@s)
begin
	insert into @table select SUBSTRING(@s,@i,1)
	set @i=@i+1
end

set @s=''
select @s=@s+val from @table order by val
print @s

/*
aabbdefggkoop
*/

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧