博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle分割字符串后以单列多行展示
阅读量:6805 次
发布时间:2019-06-26

本文共 706 字,大约阅读时间需要 2 分钟。

hot3.png

原始的sql:

 
  1. select substr(field1,

  2.  
  3. instr(field1, '|', 1, rownum) + 1,

  4.  
  5. instr(field1, '|', 1, rownum + 1) -

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

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

  10.  
  11. 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是递增的,所以会变成七行数据。

分析完毕。

转载于:https://my.oschina.net/youfen/blog/1863647

你可能感兴趣的文章
Oracle计算时间差函数
查看>>
django-pure-pagination使用方法
查看>>
ubuantu 18.04 LTS 版本解决网易云安装启动问题
查看>>
Java分享笔记:泛型类的定义与使用
查看>>
springCloud全实战超详细代码demo+笔记
查看>>
Golang 知识点总结
查看>>
Bitmap
查看>>
(转)arcgis面状文件坐标导出方法
查看>>
LPC824 周立功AM824学习笔记
查看>>
SQL数据库学习之路(三)
查看>>
开发https应用
查看>>
js轮换广告
查看>>
墨菲定律
查看>>
Maven
查看>>
MovieReview—Kingsman THE SECRET SERVICE(王牌特工之特工学院)
查看>>
C语言成长学习题(九)
查看>>
银行里的迷宫
查看>>
codevs——1294 全排列
查看>>
9.13模拟试题
查看>>
自动生成单据编号
查看>>