-----------------------建表-------------------------
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. NGINX实现咏南跨平台中间件集群

    NGINX实现咏南跨平台中间件集群 首先要开启咏南LINUX中间件. 1)编辑usr/local/nginx/conf/nginx.conf #user  nobody;worker_processe ...

  2. (转载)RNA表观遗传学开创者何川

    何川,RNA表观遗传学开创者.早年毕业于中国科技大学,2000年获麻省理工学院博士学位,2000到2002年在哈佛大学做博士后研究,2002年至今执教芝加哥大学化学系, 是芝加哥大学生物物理动态研究所 ...

  3. Eclipse 搭建Struts2

    Eclipse版本 Mars Release (4.5.0) Struts版本 struts-2.5.20 下载地址:https://struts.apache.org/download.cgi#st ...

  4. 数据结构---哈希表的C语言实现(闭散列)

    原文地址:https://blog.csdn.net/weixin_40331034/article/details/79461705 构造一种存储结构,通过某种函数(hashFunc)使元素的存储位 ...

  5. 快速创建 Vue 项目

    转载:https://www.jianshu.com/p/c7df292915e7 为了便于 Vue 项目的管理, Vue 团队官方开发了 vue-cli 工具. 本文将带您使用 vue-cli 快速 ...

  6. python 设计模式之组合模式Composite Pattern

    #引入一 文件夹对我们来说很熟悉,文件夹里面可以包含文件夹,也可以包含文件. 那么文件夹是个容器,文件夹里面的文件夹也是个容器,文件夹里面的文件是对象. 这是一个树形结构 咱们生活工作中常用的一种结构 ...

  7. PHP如何实现静态的链式调用

    Db::table('**')->where('***','***')->order('***')->find('**'); 想这种应该怎么实现 public function ta ...

  8. [转载] Ubuntu上Firefox字体太小--高分屏背锅

    版权声明:本文为CSDN博主「mythinker2」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/myth ...

  9. Jmeter之__CSVRead随机读取变量

    背景:当你需要从一些数据中随机的取值用的话可以用这个函数来实现__CSVRead __CSVRead函数用于对脚本进行参数化,当脚本中不同变量需要不同参数值时,可以考虑__CSVRead函数. _CS ...

  10. Mockplus更快更简单的原型设计

    更快更简单的原型设计 https://www.mockplus.cn/ Mockplus,更快更简单的原型设计工具.快速创建原型,一键拖拽创建交互,团队协作省事省力.微软.华为.东软.育碧.Oracl ...