Oracle 字符串分割
来源:互联网 发布:淘宝买药付款流程 编辑:程序博客网 时间:2024/06/06 20:34
Java的String有Split()方法,Oracle SQL也可以实现同样功能。该功能是Listagg()的逆运算。
1. 使用正则表达式
$hr@ORCL> col splited format a20$hr@ORCL> SELECT REGEXP_SUBSTR('first field,second field,third field', '[^,]+', 1,rownum) splitedFROM DUALCONNECT BY ROWNUM <=LENGTH ('first field, second field , third field') - LENGTH (REPLACE ('first field, second field , third field', ',', '')) +1;SPLITED--------------------first fieldsecond fieldthird field2. 使用substr, instr函数组合
select substr(t,1,instr(t,',',1)-1) splited from ( SELECT substr(s,instr(s,',',1,ROWNUM)+1)||',' AS t,ROWNUM AS d ,instr(s,',',1,ROWNUM)+1 FROM ( SELECT ',tt,aa,bb' AS s FROM dual )CONNECT BY instr(s,',','1',ROWNUM)>1);SPLITED --------------------tt aa bb
假如connect by 没有prior,会产生无穷多行。比如:
select * from dual connect by rownum >= 1;
$hr@ORCL> SELECT substr(s,instr(s,',',1,ROWNUM)+1)||',' AS t,ROWNUM AS d ,instr(s,',',1,ROWNUM)+1 FROM ( SELECT ',tt,aa,bb' AS s FROM dual )CONNECT BY instr(s,',','1',ROWNUM)>1;T D INSTR(S,',',1,ROWNUM)+1------------------------------------- ---------- -----------------------tt,aa,bb, 1 2aa,bb, 2 5bb, 3 8这个SQL中由于connect by 会产生无穷多行,意即rownum无限增大,但是rownum作为instr的occurrence参数时,3以后会返回0. 再给定条件>1,从而将结果集巧妙的限定为s中逗号的出现次数。
0 0
- oracle 分割字符串
- Oracle 分割字符串
- Oracle 分割字符串
- oracle 分割字符串
- oracle分割字符串函数
- Oracle 字符串分割
- oracle 分割字符串
- Oracle 字符串分割
- Oracle 字符串 分割
- Oracle 字符串分割 Split
- oracle字符串分割
- oracle分割字符串函数
- oracle 字符串分割
- Oracle字符串分割Split
- oracle 分割字符串 截取字符串
- oracle 分割字符串 截取字符串
- [Oracle]分割字符串返回数组
- oracle function 分割字符串函数
- C#不是C++ 之 委托(Delegate)
- const、volatile、mutable的用法总结
- swift 杀毒 和ClamAV集成
- 2012 oschina开源项目
- 我的python学习记录_Python基础教程
- Oracle 字符串分割
- GPIO的上拉电阻的作用
- Map 集合里 判断里面参数是否存在 hibernate String时间查询
- linux:SUID、SGID详解
- 利用libevent进行网络异常检查
- Hadoop cannot find namenode pid file when shutdown
- 关于Java中的IEEE765浮点数表示法
- 面向对象的三大特征
- VS2012 下编译boost1.52