zoukankan      html  css  js  c++  java
  • oracle一列中的数据有多个*用逗号隔开,我如何分别取出来?

    ID      NUMBER
    1 137xxxx,138xxxx
    取出来成
    ID NUMBER
    1 137xxxx
    1 138xxxx

    create table test
    (id int,
    phone varchar2(200));
    insert into test values (1,'13811111111,13311111111,13900000000');
    insert into test values (2,'15811111111,15911111111,18800000000');

    第一种方式
    select id,c from
    (with as (select id,phone c from test)
    select id,substr(t.ca,instr(t.ca, ',', 1, c.lv) + 1,instr(t.ca, ',', 1, c.lv + 1) - (instr(t.ca, ',', 1, c.lv) + 1)) AS c
    from (select id,',' || c || ',' AS ca,length(c || ',') - nvl(length(REPLACE(c, ',')),0) AS cnt FROM t) t,
    (select LEVEL lv from dual CONNECT BY LEVEL <= 100) c where c.lv <= t.cnt) 
    order by id
     
    SELECT id,
           regexp_substr(phone, '[^,]+', 1, LEVEL) mobile
    FROM   test
    CONNECT BY PRIOR id = id
        AND    PRIOR dbms_random.VALUE IS NOT NULL
        AND    LEVEL <= length(phone) - length(REPLACE(phone, ',')) + 1
  • 相关阅读:
    进程Queue
    进程ID
    多进程
    queue 生产者、清费者
    让静态页面显示用户登录状态
    apache2.2 + tomcat6 整合以及集群配置整理
    linux安装rzsz
    http_load
    用Ant实现Java项目的自动构建和部署
    Openfire:安装指南
  • 原文地址:https://www.cnblogs.com/myjoan/p/4139348.html
Copyright © 2011-2022 走看看