需求,表数据如:要求圈中的数据,必须根据线芯有序排列。
思路: 1、首先根据分号分隔元素。oracle 很蛋疼,没有提供字符串分隔函数,网上倒是多觉得有点麻烦,耐着性子继续网上找了下,还真让我找到一篇博客,那已是年前了。今天找了一片还没找到。
如:避免了oracle 的定义参数类型,字符串分隔函数。
2、元素排序这个大家都懂。
3、合并,这个用的是 wm_concat 函数,11g后才有
最终效果:
扫描二维码关注公众号,回复:
5164618 查看本文章
sql:
SELECT wm_concat(core_idf || ';') FROM ( SELECT core_idf FROM ( SELECT regexp_substr('红:6.28,;黄:5.30,;蓝:2.30,;', '[^;]+', 1, ROWNUM) AS core_idf FROM dual CONNECT BY ROWNUM <= length(regexp_replace('红:6.28,;黄:5.30,;蓝:2.30,;', '[^;]', NULL)) ) temp ORDER BY core_idf );