网站建设资讯

NEWS

网站建设资讯

oracle如何拆分分录,oracle怎么分库分表

oracle 对表每一行进行拆分

有时候查询的时候会进行拆分,对某串字符串进行拆分的时候可以用:

创新互联-专业网站定制、快速模板网站建设、高性价比博罗网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式博罗网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖博罗地区。费用合理售后完善,十载实体公司更值得信赖。

select regexp_substr('aaaaa,bbbb,cc,ddddd,ee','[^,]+',1,level)

from dual

connect by level = regexp_count('aaaaa,bbbb,cc,ddddd,ee',',')+1;

对于表中的每一行进行拆分,则需自身与自身递归,但是connect by deptno = prior deptno 会报错误,因此需要使用prior dbms_random.value is not null 来欺骗oracle

例: select t.*,regexp_substr(t.ename,'[^,]+',1,level)

from emp_bak t

connect by level = regexp_count(t.ename,',')+1

and  t.ename = prior t.ename

and prior dbms_random.value is not null;

oracle中如何将一条记录拆分为多条记录

例如表名为test,数据如下

原数据为

col1  col2   col3   col4

A       1        2        3

B       1        2        3

然后用如下语句

select * from

(select col1,col2 from test

union all

select col1,col3 from test

union all

select col1,col4 from test) as t

order by col1

得到的数据就是

A  1

A  2

A  3

B  1

B  2

B  3

Oracle通过一个字段的值将一条记录拆分为多条记录

本文个人拙见,若有出入,请指出——来自菜的颤抖

该方式的效率不高,如何优化,请看 记Oracle中regexp_substr函数的一次调优(速度提高99.5%)

表A中存放了集装箱的信息,一个集装箱一条记录,表B中存放了对于集装箱操作的指令,一条指令包括多个集装箱箱号,通过分号 ; 切割( TCIU2347687;XUTR3546865 ),现在的需求是,对于已经在指令表B中的集装箱,在查询表A时需要过滤掉。

所以必须将分号分割的记录,拆分成单独的记录。

变成:

Oracle可使用 regexp_substr函数 实现,实现上面切割的sql为:

其中 regexp_substr 各个参数的含义:

结果就是 aaa , 如果把第二个1变成2,输出就是 bbb 。

好了,这部分意图很明显了,下面就是把它每一个切割串取出来,看到上面取 level个 ,而这个 level 是个什么东西呢,在这个之前,先看 regexp_count(string, c) 函数,这个函数其实很好理解,返回string中c的个数。

然后就是这个level,这是一个伪列,和RowNum相似,

所以再回到最初的sql,也就很好理解了。

如何把oracle中查询出来的一列进行拆分。如查出结果为1@2@3@4,如何拆分成 1 2 3

通过instr和truncate函数进行拆分。

instr得到各个顺序的@的位置,truncate通过得到的位置情况进行字符串截取。


文章名称:oracle如何拆分分录,oracle怎么分库分表
网页URL:http://cdweb.net/article/hsgido.html