求助。。利用存储过程对被逗号隔开的数字快速排序

afa254212505 2012-03-21 01:46:44
如题,在ORACLE中用存储过程实现对一串被逗号隔开的数字快速排序
...全文
108 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
啊彪123 2012-03-21
  • 打赏
  • 举报
回复
高手啊!
  • 打赏
  • 举报
回复
ps:新手注意结贴
  • 打赏
  • 举报
回复

--定义一个类型
CREATE OR REPLACE TYPE type_split IS TABLE OF VARCHAR2 (4000);
--创建函数
CREATE OR REPLACE FUNCTION SPLIT(P_SOURCE VARCHAR2, P_SEP VARCHAR2)
RETURN TYPE_SPLIT
PIPELINED IS
L_IDX PLS_INTEGER;
V_LIST VARCHAR2(50) := P_SOURCE;
BEGIN
LOOP
L_IDX := INSTR(V_LIST, P_SEP);
IF L_IDX > 0 THEN
PIPE ROW(SUBSTR(V_LIST, 1, L_IDX - 1));
V_LIST := SUBSTR(V_LIST, L_IDX + LENGTH(P_SEP));
ELSE
PIPE ROW(V_LIST);
EXIT;
END IF;
END LOOP;
RETURN;
END SPLIT;
--调用

select * from table(SPLIT('22,3,1,4',','))
order by to_number(column_value)

column_value
----------------------
1 1
2 3
3 4
4 22


xpingping 2012-03-21
  • 打赏
  • 举报
回复
select * from(
select to_number(regexp_substr('2,3,1,5,6,8,9,32,34,234,1,43,5,76,8','[^,]+',1,rownum)) rn
from dual connect by rownum<= length(regexp_replace('2,3,1,5,6,8,9,32,34,234,1,43,5,76,8','[^,]+'))+1)
order by rn asc
afa254212505 2012-03-21
  • 打赏
  • 举报
回复
求代码

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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