`
yuqihengsheng
  • 浏览: 14274 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

oracle 字符以“,”拆分列转行

 
阅读更多

select a, b, c
  from ( with test as (select 'aaa' a, 'bbb' b, '1,2,3' c from dual)
 
         select a,
                b,
                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 a,
                        b,
                        ',' || c || ',' AS ca,
                        length(c || ',') - nvl(length(REPLACE(c, ',')), 0) AS cnt
                   FROM test) t,
                (select LEVEL lv from dual CONNECT BY LEVEL <= 100) c
          where c.lv <= t.cnt)  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics