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 ...
随机推荐
- C语言 · 约数个数
算法提高 约数个数 时间限制:1.0s 内存限制:512.0MB 输入一个正整数N,输出其约数的个数. 样例输入 12 样例输出 6 样例说明 12的约数包括:1,2,3,4,6,1 ...
- alsamixer + alsactl 控制放音通道
1 使用alsamixer的gui界面配置放音(控制OUT1,OUT2的音量); 2 退出alsamixer,使用alsactl store生成配置文件,文件位于/etc/asound.state; ...
- DIV中display和visibility属性差别
DIV中display和visibility属性差别 DIV中display和visibility属性差别还是挺大的,虽然Visibility和Display属性都可以达到隐藏页面元素的目的,但它们的 ...
- http协议之报文详解
一. 概述 用于HTTP协议交互的信息被称为HTTP报文.请求端(客户端)的http报文叫做请求报文,响应端的叫做响应报文. 报文,是网络中交换和传输的数据单元,即站点一次性要发送的数据块.报文包含了 ...
- Spring MVC学习之三:处理方法返回值的可选类型
http://flyer2010.iteye.com/blog/1294400 ———————————————————————————————————————————————————————————— ...
- 重新=》easyui DataGrid是否可以动态的改变列显示的顺序
$.extend($.fn.datagrid.methods,{ columnMoving: function(jq){ return jq.each(function(){ var target = ...
- java 多线程 3 synchronized 同步
多任务编程的难点在于多任务共享资源.对于同一个进程空间中的多个线程来说,它们都共享堆中的对象.某个线程对对象的操作,将影响到其它的线程. 在多线程编程中,要尽力避免竞争条件(racing condit ...
- Javascript特效代码大全(420个)(转)
转载自:Javascript特效代码大全(420个) 收集资料,以便使用+面试+学习 ├ Cookie脚本 ├ 随访问次数变提示 ├ 集成Cookies ├ 使窗口仅弹出一次 ├ 签名提示程序 ├ ...
- Linux下面变量的疑问处
SHLVL是Shell累加器的变量,具体请看下面 http://www.cnblogs.com/ziyunfei/p/4803832.html OLDPWD = old pwd(就是是之前一次的pwd ...
- 去掉if
修改前 namespace CleanCSharp.Methods.Dirty { class BooleanSwitchingArgumentsExample { p ...