Oracle 实现拆分列数据的split()方法
-- 创建需要划分的字符串
with T1 as(
select 'one,two,three,four,five,six,seven,eight,nine,zero' as source_string
from dual), -- 统计字符串中子串的个数,用 ',' 来划分子串
T2 as(
select regexp_count(source_string, '[^,]+') as source_substring_count
from T1), -- 根据子串的个数创建索引列,用于给T4的regexp_substr()方法索引
T3 as(
select rownum as row_number
from dual, T2
connect by rownum <= T2.source_substring_count), -- 根据每个索引值逐个截取字符串
T4 as(
select T3.row_number as substring_index,
regexp_substr(T1.source_string, '[^,]+', 1, T3.row_number) as substring
from T1, T3) select substring_index, substring from T4;
鉴于 regexp_count() 方法是 Oracle 11g 才新加上的,之前的版本并没有,这里再用另一种方法来统计子串的个数:
-- 创建需要划分的字符串
with T1 as(
select 'one,two,three,four,five,six,seven,eight,nine,zero' as source_string
from dual), -- 统计字符串中子串的个数
-- 字符串中','字符用''代替后,其减少的长度自然就是原串中','字符的个数
T2 as(
select length(T1.source_string) - length(replace(T1.source_string, ',', '')) + 1
as source_substring_count
from T1), -- 根据子串的个数创建索引列,用于给T4的regexp_substr()方法索引
T3 as(
select rownum as row_number
from dual, T2
connect by rownum <= T2.source_substring_count), -- 根据每个索引值逐个截取字符串
T4 as(
select T3.row_number as substring_index,
regexp_substr(T1.source_string, '[^,]+', 1, T3.row_number) as substring
from T1, T3) select substring_index, substring from T4;
看见的一个博主写的,正好自己能用,先记下,同时感谢这位博主
原链接:http://flforever1213.iteye.com/blog/1026096
Oracle 实现拆分列数据的split()方法的更多相关文章
- Oracle 闪回 找回数据的实现方法
Oracle 闪回 找回数据的实现方法 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复.这篇文章主要介绍了Oracle 闪回 找回 ...
- Oracle导出数据结构和数据表的方法
1.PLSQL导出数据结构(数据表.序列.触发器.函数.视图) 1)在左侧 点击tables 2)Tools-->Export User Objects 3)红色1 是你要选择导出的表,红色2 ...
- Oracle行转列的3种方法
测试表为A3 , 有5个字段:ID1, ID2, ID3, ID4, ID5 测试数据如下: ID1 ID2 ID3 ID4 ID5 1 2 3 4 5 11 22 33 44 55 111 222 ...
- Oracle GoldenGate从oracle db 到非oracle db的初始化数据同步的方法
非oracle db以 sqlserver为样例说明: 我的思路 A :oracle db 生产 B: oracle db 中间机 C: sqlserver db 目的端 A-> B-> ...
- Hibernate中HQLwhere用法和单独取出几列数据的读取方法
String hql = "select thedate,thehour,node,query_num from Cdns cdns where thehour = " +&quo ...
- Oracle随笔之用拆分后的列数据关联表查询
-----------------------建表------------------------- create table test(id int, plist varchar2(30)) ; c ...
- Oracle 列数据聚合方法汇总
网上流传众多列数据聚合方法,现将各方法整理汇总,以做备忘. wm_concat 该方法来自wmsys下的wm_concat函数,属于Oracle内部函数,返回值类型varchar2,最大字符数4000 ...
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...
- Oracle中对列加密的方法
Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col ...
随机推荐
- rp2836 网卡以及串口与接插件位置关系
P3 ETH1 P6 ETH0 P7 /dev/ttyS3 调试口 P13-1 /dev/ttyS2 rs485+ P13-2 /dev/ttyS2 rs485- P1 ...
- PHP——分页显示数据库内容
test.php <?php header("Content-Type:text/html;charset=utf-8"); //加载分页类 include "pa ...
- 让浏览器下载文件http头部
网站提供下载服务时经常需要实现一个强制下载功能(即强制弹出下载对话框),并且文件名保持和用户之前上传时相同. 效果如下图: Content-Disposition 使用 HTTP Header 的 ...
- WEB 项目中JAVA取得WEBROOT物理路径
http://wwwzhouhui.iteye.com/blog/504330 ———————————————————————————————————————————————————————————— ...
- Linux - 用户管理常用命令
1.查看Linux已经存在的用户: [root@CMCC_91 ~]# cut -d : -f 1 /etc/passwd [root@CMCC_91 ~]# cat /etc/passwd |awk ...
- Css三栏布局自适应实现几种方法
Css三栏布局自适应实现几种方法 自适应实现方法我们可以从三个方法来做,一个是绝对定位 ,自身浮动法 和margin负值法了,下面我们一起来看看这三个例子吧,希望例子能帮助到各位同学. 绝对定位法三栏 ...
- C++ 函数的扩展②
//函数扩展--默认参数和占位参数 (了解) #include<iostream> using namespace std; /* 可以将占位参数与默认参数结合起来使用 意义 为以后程序扩 ...
- Try中如果发现错误,即跳出try去匹配catch,那么try后面的语句就不会被执行
例:public void print() throws Exception. 对于方法a,如果它定义了throws Exception.那么当它调用的方法b返回异常对象时,方法a并不处理,而将这个异 ...
- ubuntu 解压命令全部
.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)-------------------------- ...
- 【BZOJ】1072: [SCOI2007]排列perm(状压dp+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1072 首先无限膜拜题解orz表示只会暴力orz 数据那么小我竟然想不到状压! orz 这种题可以取模 ...