网站首页 > 文章中心 > 其它

oracle如何拆分分录

作者:小编 更新时间:2023-09-01 14:52:58 浏览量:386人看过

oracle 对表每一行进行拆分

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

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

oracle如何拆分分录-图1

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

? and? t.ename = prior t.ename

? and prior dbms_random.value is not null;

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

oracle如何拆分分录-图2

例如表名为test,数据如下

原数据为

然后用如下语句

select?*?from

union?all

order?by?col1

得到的数据就是

A ?1

B ?1

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

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

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

变成:

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

其中 regexp_substr 各个参数的含义:

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

oracle如何拆分分录-图3

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

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

如何把oracle中查询出来的一列进行拆分.如查出结[email protected]/*

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

以上就是土嘎嘎小编为大家整理的oracle如何拆分分录相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章