zoukankan      html  css  js  c++  java
  • 正则表达式使用一例

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

    通过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

  • 相关阅读:
    计算机故障
    线程池&进程池
    机箱-网卡-声卡-显卡-显示器
    scrapy请求传参-BOSS反爬
    计算机硬件-主板
    计算机硬件-内存
    计算机硬件-硬盘
    计算机硬件-CPU
    ZJNU 1223
    ZJNU 1217
  • 原文地址:https://www.cnblogs.com/tracy/p/2082308.html
Copyright © 2011-2022 走看看