?拆分与合并?函数

---拆分函数

1 当需要把一个字符串按某一分隔符分隔后,变为数据列,即把字符串行变为列,可以使用level关键字,例子:

with t as

(select ‘a;b;c;d;e‘ as str from dual)

select level,

t.str,

substr(t.str, 2 * (level - 1) + 1, 1) as str_signle

from t

connect by level <= length(t.str) - length(replace(t.str, ‘;‘, ‘‘)) + 1;

运行结果:

2、上面的写法只是适用于一般有规律的字符串行,当遇到不规则字符串行时,可以使用oracle的正则表达式函数,请看下面的例子:

  1. with t as
  2. (select ‘i;am;a;test;hahahhah‘ as str from dual)
  3. select level,
  4. str,
  5. regexp_substr(t.str, ‘[^;]+‘, 1, level) str_single
  6. from t
  7. connect by level <= length(t.str) - length(replace(t.str, ‘;‘, ‘‘)) + 1;

运行结果:

或者不使用正则表达式:

  1. with t_org as
  2. (select ‘I am a complicated string‘ as str from dual),
  3. t_sep as
  4. (select ‘ ‘ as sep from dual),
  5. t as
  6. (select t_org.str as orign_str,
  7. t_sep.sep || t_org.str || t_sep.sep as str
  8. from t_org,
  9. t_sep)

10. select level,

  1. 11.        t.orign_str,

12. /*     instr(t.str, t_sep.sep, 1, level) as separator_postion,

  1. 13.        instr(t.str, t_sep.sep, 1, level) + 1 as str_postion_begin,
  2. 14.        instr(t.str, t_sep.sep, 1, level + 1) -
  3. 15.        instr(t.str, t_sep.sep, 1, level) - 1 as str_single_len,*/
  4. 16.        substr(t.str, instr(t.str, t_sep.sep, 1, level) + 1, instr(t.str, t_sep.sep, 1, level + 1) -
  5. 17.                instr(t.str, t_sep.sep, 1, level) - 1) as str_signle
  6. 18.   from t,
  7. 19.        t_sep

20. connect by level < length(t.str) - length(replace(t.str, t_sep.sep, ‘‘));

运行结果:

时间: 2024-10-19 07:55:38

?拆分与合并?函数的相关文章

数组函数《拆分、合并、分解和接合》

本节介绍的数组处理函数能够完成一些更复杂的数组处理任务,可以把数组作为一个集合处理.例如,对两个货多个数组进行合并,计算数组间的差集或交集,从数组元素中提取一部分,以及完成数组的比较. ①函数array_slice() array_slice()函数的作用是在数组中根据条件取出一段值并返回.如果数组有字符串键,所返回的数组将保留键名.该函数可以设置4个参数,其函数的原型如下: array array_slice(array array , int offset [,int length[,boo

Goldengate进程的拆分与合并

Goldengate的拆分与合并分类: ORACLE GoldenGate 2013-10-10 15:22 721人阅读 评论(0) 收藏 举报在使用Goldengate作为复制解决方案时,随着负载的增加,replicat组件常常是最先出现性能瓶颈的.为了适应不断增加的负载,就需要拆分replicat来实现并行复制,本文介绍Goldengate拆分的具体实施步骤.同时,作为拆分的逆向操作,介绍如何将拆分的多个replicat合并回一个replicat. 拆分的方式一般分为两种:一种是用gold

数组合并函数,二维数组相同字段合并到一起。

一般从数据库中提取数据时,会遇到各种各样类型的数据,要求也不尽相同.自己这两天开发的时候遇到一个很纠结的问题,如下: 比如一个二维数组是这样的: Array ( [0] => Array ( [uid] => 231 [username] => 123456 [active] =>aaaa [transfer] =>1111 ) [1] => Array ( [uid] => 231 [username] =>123456 [active] => bb

php js css加载合并函数 宋正河整理

<?php //php js css加载合并函数 宋正河整理 //转载请注明出处 define('COMBINE_JS',true); define('COMBINE_CSS',true);   define('APPLICATION_JS_ROOT','E:/wwwroot/m/js/'); define('APPLICATION_CSS_ROOT','E:/wwwroot/m/css/');   define('SC_ROOT','E:/wwwroot/m/static_cache/');

JAVA学习笔记(三十六)- 文件的拆分和合并

文件的拆分和合并 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.SequenceInputStream; import java.util.Enumeration; import java.util.Vector; /* * 文件的拆分和合并 */ public class

fasta文件拆分与合并

Linux中fasta文件的拆分与合并 FASTA文件的拆分: (1)如果从一个文件a提取第11至20个序列存到另一个文件b: awk -v RS='>' 'NR>1{i++}i>=10&&i<=21{print ">"$0}' a.fasta|sed '/^$/d'>b.fasta (2)将某一文件a中每一条序列保存到一个文件中: awk '/^>/{f=++d".fasta"} {print > f

【制作表情包】Python拆分和合并GIF动态图(几行代码就搞定)

“表情包”是当前社交软件上不可或缺的交流方式,难以用文字表达的意思,发一个“表情包”,对方就能心领神会.下面是小派制作的一个表情包,准确地讲,是在已有表情包的基础上,二次加工而成的. 下面以最简单的代码形式(10行左右),介绍上述“表情包”的制作过程.第一,将GIF动态图拆分成图形帧.下图是网络上找到的一个GIF格式动态图. 利用Python将上述GIF格式动态图拆分图形帧,只需要输入以下代码.其中第1-2行是导入os库.从PIL库中导入Image函数功能.第3行是Image.open打开位于D

mysql 多行(GROUP_CONCAT)和多列(CONCAT)的合并函数

1,多行合并:把查询的一行或者多行进行合并. SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 AND md.user_id=17: 利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行,如|1 | 10,20,20| 本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如sel

Oracle合并函数内容

--MINUS去差集,取第一个集合有的而第二集合没有的,并以第一个字段排序select t.bumenbm from T_HQ_BM t minus select b.bumenbm from t_hq_bm2 b --INTERSECT 取交集,取两个集合都有的,并按第一个字段排序 select t.bumenbm from T_HQ_BM t intersect select b.bumenbm from t_hq_bm2 b --UNION去重合并,去重复记录,并按第一个字段排序 sele