当前位置:  数据库>oracle

Oralce 按分隔符把一列转成多行

    来源: 互联网  发布时间:2017-05-30

    本文导语: 1.前言   最近因项目需求,需要把员工的工作组返回给前台,但是数据库是把员工的工作组Id,都存在一个字段内了(以“逗号”分隔),而这样不符合前台的需要,他们需要一行,一行的数据。如:   数据库: userId, workgro...

1.前言

  最近因项目需求,需要把员工的工作组返回给前台,但是数据库是把员工的工作组Id,都存在一个字段内了(以“逗号”分隔),而这样不符合前台的需要,他们需要一行,一行的数据。如:

  数据库:

userId, workgroup
1001   10,12,15
1002    2,4,5

  前台需要:

 
userId, workgroup
1001   10
1001   12
1001   15
1002   2
1002   4
1002   5
 

 

2. 分析思路:

  大体的思路是这样的:

  首先:要知道,每一员工最多有多少个组。

  其次:建一个有关“数”的临时表,与上面的组数进行关联,这样就出现了“多”行

  最后:多“行”有了,剩下的就是对每一行的组进行刷选。如第一行取第一个逗号左边的,第二行取第二个逗号左边的, 依此类推。

 

3. 实现:

  根据上次的思路,来实现:

  第一步: 

 
with v_usergroups as (select  as userId, as workgroups from dual
                      union
                      select  as userId, as workgroups from dual
                      )      
select userid, || workgroups || AS tempgroups,length(workgroups || ) - nvl(length(REPLACE(workgroups, )), 0) AS groupcount FROM v_usergroups
 

  PS: 这里在"workgroup" 的前后也加了逗号,是为了后面使用方面。

  第二步:

select LEVEL lv from dual CONNECT BY LEVEL 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 寻找oralce7.3的driver
  • 与oralce数据库连接?
  • 在ORALCE中怎样取得天数的差值?
  • 安装oralce后如何启动database configuration assitant?
  • 请问用ORALCE建一个库,在网页上的连接直接访问这个库,怎么构建?100分
  • Oralce的环境变量设置,谢谢!!
  • 安装oralce报告硬盘空间不足...
  • 用oci连接oralce问题
  • 提取oralce当天的alert log的shell脚本代码
  • 在linux RedHat5.0 64bit下安装oralce 10g 为什么会出现这样的问题---急!
  • 设置oralce自动内存管理执行步骤
  • 请推荐一本讲unix/linux c/c++ 数据库DB2/Oralce/sysbase等 开发方面的书或资料
  • 刚装好了RH9,想再装Oralce 9i,想问一下关于空间分配的问题?
  • 请教:oralce的class12.zip应放在jbuild的哪个路径下才能被认可?
  • Oralce 归档日志开启与关闭示例
  • 安装Oralce问题,在线等待……
  • Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,