保存在这里,方便自己以后查看 (⊙_⊙) ╮(╯▽╰)╭
-- 创建需要划分的字符串
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;
运行结果:
分享到:
相关推荐
本文档详细介绍了如何在Oracle数据库中实现像C#等其它编程语言中Split函数来拆分字符的功能。例子简单易懂,并附有详细的实现过程。
Erp/Ehr/Crm/Clm系统的开发者很多时候会用到姓名拆分为汉语拼音的代码。 这个函数可以帮你实现以下内容。...select fn_getpy( F_namesplit('张三',1),2) as 姓,fn_getpy( F_namesplit('张三',2),2) as 名 from dual
最近在oracle 中用到拆分字符串返回数组,一直头痛,因为在 oracle 中没有类似java中有split 函数 ,所以要自己写。好不容搜到一个。那网上是到处都是这个代码。怎么找都是这个方法,我就用了。这个方法如下: ...
Oracle 分割字符串 返回多行数据
Oracle拆分字符串,字符串分割的函数,将返回一个表格,如果有需要的可以下载去看看。
2、使用临时表,先调用一个存储过程将ID拆分并插入到临时表中,然后结合临时表可以写SQL一次处理多笔。缺点:需要插临时表,效率不高,数据量越大影响越严重。 以前的项目用的最多的还是第2中方式,毕竟方便,且效率...
1.3.5.2 11g 虚拟列实现 按星期分区表......76 1.3.5.3 Interval 分区 示例............................78 1.3.5.3.1 创建按月分区的分区表..............78 1.3.5.3.2 创建一个以天为间隔的分区表...80 ...
将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 ...select * from scott.emp where empno in (select column_value from table(my_split('7369,7499,7521,7844',',')));
在Oracle 几年的学习中,做了很多的实验,也遇到了很多的问题, 在这个过程中,积累了一些学习文档。也更新到了blog上。 因为太多,不便于查阅。 根据自己对 Oracle 的理解,把这些 blog 进行了分类,并进行了一些...
11.3 常用表单数据的验证方法 177 11.3.1 姓名验证 177 11.3.2 日期验证 177 11.3.3 E-mail地址验证 178 11.3.4 密码字段的验证 178 11.3.5 改进的用户信息输入程序 178 11.4 URL编码解码函数 181 11.4.1 编码字符串...
aaa,bbb,ccc n=2时 截取结果 bbb 很明白了吧 哈
电影分级分割器服务 该服务的作用是什么? 电影分级拆分器服务是一种微服务,它具有: 电影消息卡夫卡主题中的消费 根据已收到的分级将电影消息拆分为各个FilmRating消息 ...Oracle VirtualBox 5.0.40或5.
27 <br>0056 强行改变运算符的运算顺序 27 <br>第3章 程序算法 29 <br>3.1 数据结构 30 <br>0057 如何实现单向链表 30 <br>0058 如何实现双向链表 35 <br>0059 如何实现堆栈 41 ...
1.8 搜索元数据 ............................................................................................................. 12 1.9 设置环境变量 ..........................................................