码迷,mamicode.com
首页 > 数据库 > 详细

oracle分割字符串后以单列多行展示

时间:2014-11-20 13:49:05      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   sp   数据   on   2014   log   bs   

原始的sql:

select substr(field1,

              instr(field1, '|', 1, rownum) + 1,

              instr(field1, '|', 1, rownum + 1) -

              instr(field1, '|', 1, rownum) - 1) as field2

  from (select '|' || 'a|bbb|cccc|ddddd|ee|d|a' || '|' as field1 from dual)

connect by instr(field1, '|', 2, rownum) > 0;

查询结果如下:

field2

a
bbb
cccc
ddddd
ee
d
a

connect by :递归,即查询继续的条件

instr(field1, ‘|‘, 2, rownum)  字符串从第2个位置开始,即从a开始,‘|’分隔符从第一次到第八次出现的位置依次是:3、5、7、9、11、13、15、0,所以会查询七次,也就是会有七行。

substr函数的第二个参数为instr(field1, ‘|‘, 1, rownum) + 1,表示‘|’从第一个位置开始匹配,第一到第七次匹配的位置加上一,即2、4、6、8、10、12、14

substr函数的第三个参数仔细看一下,恒等于一。

也就是说,按‘|’分割后,第一次取第二部分,第二次取第四部分,依次类推。

取的值分别为:a、bbb、cccc、ddddd、ee、d、a

因为rownum是递增的,所以会变成七行数据。

分析完毕。

 

 

 

 

oracle分割字符串后以单列多行展示

标签:style   blog   color   sp   数据   on   2014   log   bs   

原文地址:http://blog.csdn.net/helloboat/article/details/41310569

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!