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

  • 相关阅读:
    PAT-1011 World Cup Betting 解答(with python)
    2016-7-4收藏夹接口
    接口
    ssh框架开发问题
    sql语句的各种模糊查询
    SSH集成开发框架开发步骤
    Struts+Hibernate+Spring实现用户登录功能
    SQL Server 2008 下载及安装教程
    Struts和SpringMVC两种MVC框架比较
    JSP中乱码问题
  • 原文地址:https://www.cnblogs.com/tracy/p/2082308.html
Copyright © 2011-2022 走看看