您的位置:首页 > 其它

将一个字段中以符号分隔的多个数字进行排序显示

2016-05-11 10:48 597 查看

 

如图,要将my_list 列变为 my_list2 列 ,测试数据如下

CREATE TABLE test_num

(my_LIST VARCHAR2(125));

insert into test_num (MY_LIST)
values ('1,4');
insert into test_num (MY_LIST)
values ('9,2,1');
insert into test_num (MY_LIST)
values ('2,4,1,');
insert into test_num (MY_LIST)
values ('1,4,6');
insert into test_num (MY_LIST)
values ('7');
insert into test_num (MY_LIST)
values ('8,1');
insert into test_num (MY_LIST)
values ('7,5,3,2');

查询语句如下:

SELECT MY_LIST,LISTAGG(STR,',') WITHIN GROUP(  ORDER BY STR)MY_LIST2 FROM (

SELECT DISTINCT MY_LIST,SUBSTR(COLNAME,INSTR(COLNAME, ',',1,LEVEL)+1,

                      INSTR(COLNAME,',',1,LEVEL+1)-

                      INSTR(COLNAME,',',1,LEVEL)-1)STR              

FROM (SELECT MY_LIST,','||MY_LIST||',' AS COLNAME FROM test_num)

CONNECT BY LEVEL<LENGTH(COLNAME)-LENGTH(REPLACE(COLNAME,','))

) GROUP BY MY_LIST;

SELECT (SELECT LISTAGG(REGEXP_SUBSTR(MY_LIST, '[^,]+', 1, LEVEL), ',') WITHIN GROUP(ORDER BY TO_NUMBER(REGEXP_SUBSTR(MY_LIST, '[^,]+', 1, LEVEL)))

          FROM DUAL CONNECT BY REGEXP_SUBSTR(MY_LIST, '[^,]+', 1, LEVEL) IS NOT NULL) AA

  FROM test_num;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: