代码改变世界

正则表达式使用一例

  Tracy.  阅读(357)  评论(0编辑  收藏  举报

如何用正则表达式实现这样的需求

通过wm_concat()函数得到了这样的结果:
'014,014,018,022,317,319,023,021'
如何继续排序和去重复呢?
期望结果:'014,018,021,022,023,317,319'
测试数据:
select '014,014,018,022,317,319,023,021' from dual;
wm_concat集合函数在plsql中不能加distinct关键字,在sql中执行没事。
有三种方式屏蔽:
1、改为sql串,动态执行;
2、定义视图;
3、先 distinct ,套一层在wm_concat。
由于原sql比较复杂,不想改写,打算通过下面两个思路解决:
1、写个去重复排序函数解决这个问题。
2、想用正则表达式实现。
对于正则表达式,大家有没有好的思路?

------------------------------------------Answer--------------------------------------------------------

 

with a as (
  select '014,014,018,022,317,319,023,021,026,023' line from dual
) ,
b as (
  select distinct regexp_substr(a.line,'[^,]+',1,level) token
  from a
  connect by level<=
    (select length(rtrim(a.line,','))-length( replace(a.line,',','') ) +1 from a )
)
select wmsys.wm_concat(token) distinct_line
from b

编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)
点击右上角即可分享
微信分享提示