正则表达式使用一例
2011-06-16 08:58 Tracy. 阅读(359) 评论(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
本文来自博客园,作者:Tracy.,转载请注明原文链接:https://www.cnblogs.com/tracy/archive/2011/06/16/2082308.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步