2007
新新人类
帖子
34
精华
0
无忧币 330
积分 62
阅读权限 20
来自 (保密)
|
发表于:2008-3-4 11:05
标题:求教高手,关于SQL 字符串排序问题
<上一帖 |
下一帖>
前天有人给我出了一题,让我用SQL写出一个对字符串排序的算法。我想了一个算法见下面代码,但不是很满意,不知道各位高手有没有什么好的建议
DECLARE @StrIn VARCHAR(30),@StrOut VARCHAR(30)
SET @StrIn='我是DB不要你说是吗select'
DECLARE @TmpChar VarCHAR(2)
DECLARE @i INT,@j INT,@l int
DECLARE @t TABLE(id INT,cs VarCHAR(2))
--DECLARE @m TABLE(StrCol VARCHAR(30))
SET @l=DATALENGTH(@StrIn)
SET @i=1
--将字符串分拆到临时表
WHILE @i<=@l
BEGIN
INSERT INTO @t VALUES(@i,SUBSTRING(@StrIn,@i,1))
SET @i=@i+1
END
--从临时表中重新组织字符串
DECLARE ct CURSOR FOR SELECT cs FROM @t ORDER BY cs
OPEN ct
FETCH NEXT FROM ct INTO @TmpChar
WHILE @@FETCH_STATUS=0
BEGIN
SET @StrOut=ISNULL(@StrOut,'')+@TmpChar
FETCH NEXT FROM ct INTO @TmpChar
END
CLOSE ct
DEALLOCATE ct
SELECT @StrOut
[ 本帖最后由 2007 于 2008-3-4 11:07 编辑 ]
|
 论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币) |
|
boyi55
副版主
帖子
919
精华
1
无忧币 3898
积分 959
阅读权限 140
来自 (保密)
|
发表于:2008-3-4 16:20
刚自己写了下试:
declare @a varchar(200),@i int,@m varchar(200),@n int
set @a='12345676890asajlkjasdlfkbvzxcvjakjfoqiewrulzkja;djfalsdjflaksjf'
set @i=1
set @n=1
-- select substring(@a,@i,1)
while @i<len(@a)
begin
while @n<len(@a)
begin
if substring(@a,@n,1)>=substring(@a,@n+1,1)
begin
set @m=isnull(left(@a,@n-1),'')+substring(@a,@n+1,1)+substring(@a,@n,1)+isnull(right(@a,len(@a)-1-@n),'')
set @n=@n+1
-- select @i-1,@m,'1'
end
else
begin
set @m=isnull(left(@a,@n-1),'')+substring(@a,@n,1)+substring(@a,@n+1,1)+isnull(right(@a,len(@a)-1-@n),'')
set @n=@n+1
-- select @i-1,@m,'2'
end
set @a=@m
end
-- select @a,'3'
set @n=1
set @i=@i+1
end
select @a
[[i] 本帖最后由 boyi55 于 2008-3-4 16:22 编辑 [/i]]
|
 春江潮水连海平/海上明月共潮生/滟滟随波千万里/何处春江无月明!
|
|