博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle字符串分隔符替换(替换奇数个或偶数个)
阅读量:2134 次
发布时间:2019-04-30

本文共 684 字,大约阅读时间需要 2 分钟。

罪恶,,,,居然在图书馆占位子,,,

标题不知道怎么写比较适合,这是群里面一个小伙伴问我的问题,一番折腾后感觉思路比较有意思,就记录一下。

问题:

大概就是一个字符串:"11-12,11-21,11-22,11-24",需要处理成"11-12至11-21,11-22至11-24",即两个日期为一组,用“至”连接,然后每组日期用逗号隔开。

于是乎,折腾一番后,

思路是:

1、先按逗号拆分成单个日期,加上一个分组字段,连续两个日期为同一组;

2、按照分组用listagg进行聚合,用“至”分隔,这样,两个为一组的就拼接出来了;

3、将各组重新聚合,用逗号分隔,如此。

代码如下,with as的结构跟上面思路分点一样:

with t1 as (  select regexp_substr('11-12,11-21,11-22,11-24', '[^,]+', 1, level ) dt       , level lv, round(level/2) grp    from dual     connect by level <= regexp_count('11-12,11-21,11-22,11-247', '[^,]+')), t2 as (   select grp, listagg(dt, '至')within group(order by lv) str      from t1 group by grp)select listagg(str, ',')within group(order by grp) str from t2;

结果如下:

转载地址:http://zmkgf.baihongyu.com/

你可能感兴趣的文章
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】111-Minimum Depth of Binary Tree
查看>>
【LEETCODE】235-Lowest Common Ancestor of a Binary Search Tree
查看>>
【LEETCODE】110-Balanced Binary Tree
查看>>
【LEETCODE】101-Symmetric Tree
查看>>
【LEETCODE】257-Binary Tree Paths
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】107-Binary Tree Level Order Traversal II
查看>>