oracle如何拆分字段 oracle列拆分

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数据库字段拆分

SELECT REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 1),

REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 2),

REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 3),

DECODE(REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5), NULL, NULL, REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 4)),

DECODE(REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5), NULL, REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 4), REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5))

FROM 机构层级关系表 t

前三列根据正则匹配,获取对应的分割后的值,没有啥讲的,

第四列要判断是否存在第五列,如果不存在,则第四列要空,存在则用第四列的值

第五列要判断是否存在第五列,如果不存在,则给第四列的值,存在则用第五列的值

oracle 如何将一个字段里的值拆分为多个值显示出来

直接使用拼接的方法来解决此问题。

如下参考:

1.新的PHP文件,如下所示。

2.声明数组变量,如下图所示。

3.使用内爆函数将数组连接到具有连接字符-的字符串中。

4.输出连接后的字符串,如下图所示。

5.预览效果如图所示。

6.用implode函数使数组拼接成字符串,连接符为?完成如下。


文章题目:oracle如何拆分字段 oracle列拆分
转载注明:http://pwwzsj.com/article/hgsgds.html