• 行转列


    9i下
    --多行
    with temp as
    (select '6001600301,6001600302,6001600303,6001600304' text from dual
    union
    select '7001600301,7001600302,7001600303' text from dual
    )
    select substr(text,instr(text,',',1,rn)+1,instr(text,',',1,rn+1)-instr(text,',',1,rn)-1) text from
    (
      select ','||t1.text||',' text,t2.rn from
       (select text,length(text)-length(replace(text,',',''))+1 rn from temp) t1,
       (select rownum rn from all_objects where rownum <= (select max(length(text)-length(replace(text,',',''))+1) rn from temp)) t2
      where t1.rn >= t2.rn order by text,rn
    )

    TEXT
    6001600301
    6001600302
    6001600303
    6001600304
    7001600301
    7001600302
    7001600303


    --单行
    with temp as
    (select '6001600301,6001600302,6001600303,6001600304' text from dual)
    select substr(text,instr(text,',',1,rn)+1,instr(text,',',1,rn+1)-instr(text,',',1,rn)-1) text from
    (
      select ','||t1.text||',' text,t2.rn from temp t1,
      (select rownum rn from all_objects where rownum <= (select length(text)-length(replace(text,',',''))+1 from temp)) t2
    )

    TEXT
    6001600301
    6001600302
    6001600303
    6001600304


    10G下
    --多行
    with temp as
    (select '6001600301,6001600302,6001600303,6001600304' text from dual
    union
    select '7001600301,7001600302,7001600303' text from dual
    )
    select regexp_substr(text,'[0-9]+',1,rn) text from
    (
      select t1.text,t2.rn from
       (select text,length(text)-length(replace(text,',',''))+1 rn from temp) t1,
       (select level rn from dual connect by rownum <= (select max(length(text)-length(replace(text,',',''))+1) rn from temp)) t2
      where t1.rn >= t2.rn order by text,rn
    )

    TEXT
    6001600301
    6001600302
    6001600303
    6001600304
    7001600301
    7001600302
    7001600303


    --单行
    with temp as
    (select '6001600301,6001600302,6001600303,6001600304' text from dual)
    select regexp_substr(text,'[0-9]+',1,rn) text from temp t1,
    (select level rn from dual connect by rownum <= (select length(text)-length(replace(text,',',''))+1 from temp)) t2

    TEXT
    6001600301
    6001600302
    6001600303
    6001600304
     




  • 相关阅读:
    zabbix3.4报警队列过多清理
    k8s安装nexus并导入第三方jar包
    kubeadmin安装最新版本的kubenets
    aws相关知识
    mysql忘记root密码做法
    mysql实现读写分离(proxy)与高可用(MGR)
    jvm调优
    zabbix监控php-fpm的性能
    脚本
    opencv demo
  • 原文地址:https://www.cnblogs.com/djinmusic/p/4019506.html
Copyright © 2020-2023  润新知