求字符串排序?'051703121129'

billrobin 2010-09-23 08:40:46
求字符串排序?

'051703121129'


求兄弟们写一个函数,将字符串:'051703121129' 转换成:'030511121729' 每二位是一个字符串


'05 17 03 12 11 29'-------'03 05 11 12 17 29'

结果要:将字符串:'051703121129' 转换成:'030511121729'
...全文
69 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cheniwantyou 2010-09-24
[Quote=引用 3 楼 sqlcenter 的回复:]
SQL code
create function fn_test(@s varchar(1000))
returns varchar(1000)
as
begin
declare @t table (s varchar(2))
declare @i int, @ret varchar(1000)
select @i = 0, @ret = ''
wh……
[/Quote]

OK,以上乃正解。
建个临时表,两位存一个字段,在排序组合成新字符串输出。
不用函数了,存储过程直接select出来也行嘛。
回复
就是just4 2010-09-23
--瞎弄的
IF OBJECT_ID('f_test') IS NOT NULL
DROP FUNCTION f_test
GO

CREATE FUNCTION f_test (@var VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @test TABLE (tt VARCHAR(2))

WHILE LEN(@var) > 0
BEGIN
INSERT INTO @test
SELECT LEFT(@var,2)
SELECT @var = STUFF(@var,1,2,'')
END

DECLARE @str VARCHAR(50)
SELECT @str = ISNULL(@str,'') + t.tt
FROM (SELECT TOP 100
tt
FROM @test
ORDER BY CAST(tt AS INT)
) AS t
RETURN @str
END
GO

DECLARE @var VARCHAR(50)
SET @var = '051703121129'
SELECT dbo.f_test(@var)
回复
SQLCenter 2010-09-23
create function fn_test(@s varchar(1000))
returns varchar(1000)
as
begin
declare @t table (s varchar(2))
declare @i int, @ret varchar(1000)
select @i = 0, @ret = ''
while @i < (len(@s)+1)/2
begin
insert @t select substring(@s,@i*2+1,2)
set @i = @i + 1
end
select @ret = @ret + s from @t order by s
return @ret
end
go

select dbo.fn_test('051703121129') --> 030511121729
回复
喜-喜 2010-09-23
if object_id('f_GetStr') is not null
drop function f_GetStr
go
create function dbo.f_GetStr(@s varchar(100))
returns varchar(100)
as
begin
declare @t table(s varchar(10))
while len(@s)>0
begin
insert @t select left(@s,2)
set @s=stuff(@s,1,2,'')
end
select @s=''
select @s=@s+s
from @t
order by s
return @s
end
go

declare @s char(20)
set @s='051703121129'
select result=dbo.f_GetStr(@s)

/*
result
-------------
030511121729
*/
回复
水族杰纶 2010-09-23
每两位截取插入到临时表
然后排序 重新组合
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-09-23 08:40
社区公告
暂无公告