-----------------------建表-------------------------
create table test(id int, plist varchar2(30)) ;

create table p(pid int ,pname varchar2(10));

-----------------------插入测试数据----------------------------
insert into test values(1,'28345|39262|56214');
insert into test values(2,'28345|56214');
insert into test values(3,'56214');

insert into p values(28345,'产品A');
insert into p values(39262,'产品B');
insert into p values(56214,'产品C');

-----------------------------拆分语句及结果------------------------------------

select id, plist,level p_level, regexp_substr(plist , '[^|]+', 1, level) pid
from test
connect by level <= regexp_count(plist , '[^|]+')
and prior id = id
and prior dbms_random.value is not null

查询结果

-------------------拆分后关联并拼接字符后的处理语句-------------------

with m as (

--拆分列数据
select id, plist,level p_level, regexp_substr(plist , '[^|]+', 1, level) pid
from test
connect by level <= regexp_count(plist , '[^|]+')
and prior id = id
and prior dbms_random.value is not null  
)
select m.id , m.plist, listagg(p.pname,',') within group(order by p_level) rrr
from m inner join p on m.pid = p.pid
group by m.id, m.plist ;

DROP TABLE test;
DROP TABLE P;

Oracle随笔之用拆分后的列数据关联表查询的更多相关文章

  1. oracle初试、函数、增删改查、多表查询

      安装oracle后的测试以及解锁账户                  安装后打开命令行,输入 sqlplus 回车后会提示输入用户名,输入 sys或者system 回车后输入密码,密码为安装or ...

  2. MySql分区后创建索引加速单表查询和连表查询

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/konkon2012/article/de ...

  3. Oracle sqlldr 在DOS窗口导入多列数据到数据库表

    sqlldr 用法详见:https://www.cnblogs.com/rootq/archive/2009/03/01/1401061.html 测试内容: 1.创建数据库表: create tab ...

  4. 【Oracle/Java】批量删除16张十万数据的表 单线程耗时45秒 多线程耗时38秒

    昨天做了插入的单线程多线程比较,今天做个删除的. 单线程批量删除类代码: package com.hy.delete.singlethread; import java.sql.Connection; ...

  5. oracle 表查询(2)

    使用逻辑操作符号 问题:查询工资高于500 或者是岗位为MANAGER 的雇员,同时还要满足他们的姓名首字母为大写的J? or job = 'MANAGER') and ename LIKE 'J%' ...

  6. oracle 表查询二

    1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J?select * from emp where (sal > 500 or ...

  7. 七、oracle 表查询二

    1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J?select * from emp where (sal > 500 or ...

  8. oracle 表查询(二)

    1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J?select * from emp where (sal > 500 or ...

  9. 七 oracle 表查询二

    1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J?select * from emp where (sal > 500 or ...

随机推荐

  1. 机器不学习:CNN入门讲解-为什么要有最后一层全连接

    哈哈哈,又到了讲段子的时间 准备好了吗? 今天要说的是CNN最后一层了,CNN入门就要讲完啦..... 先来一段官方的语言介绍全连接层(Fully Connected Layer) 全连接层常简称为 ...

  2. useReducer代替Redux小案例-2(八)

    通过上节课的学习,用useContext实现了Redux状态共享的能力,这节课看一下如何使用useReducer来实现业务逻辑的控制.需要注意的是这节课的内容是接着上节课的,需要你把上节课的代码部分完 ...

  3. Prometheus磁盘监控

    根据挂载目录 (node_filesystem_size_bytes {mountpoint ="/"} - node_filesystem_free_bytes {mountpo ...

  4. iptables规则保存

    /etc/init.d/iptables save #查看 vim /etc/sysconfig/iptables #将iptables设置为开机启动 chkconfig iptables on #查 ...

  5. System.MarshallByRefObject.cs

    ylbtech-System.MarshallByRefObject.cs 允许在支持远程处理的应用程序中跨应用程序域边界访问对象. 1.返回顶部 1. #region 程序集 mscorlib, V ...

  6. 使用 ASP.NET Core 创建 Web API及链接sqlserver数据库

    创建 Web API https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.0& ...

  7. Dart自定义库、系统库和第三方库

    /* 前面介绍Dart基础知识的时候基本上都是在一个文件里面编写Dart代码的,但实际开发中不可能这么写,模块化很重要,所以这就需要使用到库的概念. 在Dart中,库的使用时通过import关键字引入 ...

  8. Java回调机制在RPC框架中的应用示例

    完整源码: https://gitee.com/shiyanjun/x-callback-demo 应用场景描述: 服务提供者在项目启动时,创建并启动一个TCP服务器,然后将自己提供的所有服务注册到注 ...

  9. LDFLAGS 与 LDLIBS

    今天下载了开源程序“贪吃蛇” (github地址 : https://github.com/taylorconor/tinytetris.git) 在编译时,出现如下错 linux:~/code/ot ...

  10. Spring cloud微服务安全实战-6-2JWT认证之认证服务改造

    首先来解决认证的问题. 1.效率低,每次认证都要去认证服务器调一次服务. 2.传递用户身份,在请求头里面, 3.服务之间传递请求头比较麻烦. jwt令牌. spring提供了工具,帮你在微服务之间传递 ...