求字符串排序?'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'
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
每两位截取插入到临时表
然后排序 重新组合
内容概要:本文系统研究了基于交替方向乘子法(ADMM)的多主体综合能源系统分布式协同优化方法,旨在实现多个能源主体之间的高效、隐私保护的能量协同管理。通过建立各主体的局部优化模型,并引入一致性约束条件,利用ADMM算法将集中式优化问题分解为多个分布式子问题进行迭代解,从而在保证各主体数据隐私的同时达成全局协同优化目标。研究涵盖了模型构建、算法实现、收敛性分析及数值仿真全过程,并提供了完整的Matlab代码实现,有效复现了相关学术成果,具有较强的可验证性与可拓展性。; 适合人群:具备一定数学建模能力与优化理论基础,熟悉Matlab编程,从事综合能源系统、分布式优化算法、电力系统调度等相关方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握ADMM算法在多主体能源系统协同优化中的建模与实现方法;② 构建支持隐私保护的分布式能源调度系统;③ 利用开源代码开展算法改进、性能测试或应用于实际系统的二次开发与科研论文复现; 阅读建议:建议结合凸优化与分布式计算的基础知识,深入理解增广拉格朗日函数构造、对偶更新与收敛判据的设计原理,在代码调试过程中重点关注惩罚参数选取、变量分裂策略及通信机制的实现细节,以全面掌握算法的核心机制与工程应用要点。

22,296

社区成员

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

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