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

1.前言 最近因项目需求,需要把员工的工作组返回给前台,但是数据库是把员工的工作组Id,都存在一个字段内了(以ldquo;逗号

1.前言

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

  数据库:

userId, workgroup,4,5

  前台需要:

 

userId, workgroup

 

 

2. 分析思路:

  大体的思路是这样的:

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

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

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

 

3. 实现:

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

  第一步: 

 

userId,workgroups from dualuserId,workgroups from dual)workgroups tempgroups,length(workgroups ) )), 0) AS groupcount FROM v_usergroups

 

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

  第二步:

  PS:这里的5,我们是根据业务需要,每一员工最多分为5个组,当然也可以写其他的值,但一定要大于第一步求得的”groupcount”.

 

  到这里后,我们对这两个表进行关联,看看值怎么样:

 

userId,workgroups from dualuserId,workgroups from dual) (workgroups tempgroups,length(workgroups ) )), 0) AS groupcount FROM v_usergroups ) a,() b where b.lva.groupcount order by userid,lv

 

 

 

USERID TEMPGROUPS GROUPCOUNT LV,,,,,2,4,5, 3 3

 

  到这里,就离我们最终的结果很近了。 只需要在外层对”tempgroups”做一下简单的处理就可以了:

  第三步:

    这一步的主要思路就是:截串。第一个组应该是第一逗号和第二个逗号之间的值,第二个组应该是第二个逗号与第三个逗号之间的值,那第一个,和第二个如何表示呢,其实就是利用字段lv。也就是:

    substr(tempgroups,instr(tempgroups, ‘,’, 1, lv) + 1,instr(tempgroups, ‘,’, 1, lv + 1) – (instr(tempgroups, ‘,’, 1, lv) + 1))

    最后的SQL 如下:

 

userId,workgroups from dualuserId,workgroups from dual), , , 1, lv) + 1)) from (workgroups tempgroups,length(workgroups ) )), 0) AS groupcount FROM v_usergroups ) a,() b where b.lva.groupcount order by userid,lv

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1874329.html

(0)
上一篇 2025年2月22日 09:31:10
下一篇 2025年2月22日 09:31:58

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Photoshop绘制趴在树梢的逼真变色龙图标教程

    本教程主要使用Photoshop绘制i逼真的变色龙图标教程,图标原尺寸是240*240,为了看得更清楚,我把图标放大了点,表面的皮肤纹理稍微有点受损本教程主要使用Photoshop绘制i逼真的变色龙图标教程,图标原尺寸是240*240,为了…

    2025年4月1日 编程技术
    100
  • 如何重装电脑操作系统

    电脑运行卡顿、故障频发甚至蓝屏?是时候给你的电脑“换心”了!重装系统,让你的电脑焕发新生!别担心,重装系统没那么难,只要准备充分,按照步骤操作,就能轻松搞定。本文将以windows系统为例,提供一个阶段式任务清单,手把手教你重装系统,无论是…

    2025年3月28日
    100
  • 哪个炒币平台比较好?(2025更新)

    本文介绍了十大值得关注的数字货币交易平台,包括Fenbitex、OKX、币安、币乐、Redmi Exchange、FoxEx、火币韩国、澳网、趣币和7号。这些平台各有特色,例如Fenbitex拥有全球领先的交易量和创新的社交化交易系统;OK…

    2025年3月28日 区块链
    100
  • 币圈软件有哪些?币圈交易软件APp前几名推荐

    本文推荐几款主流币圈交易软件App,包括币安(Binance)、OKEx、Coinbase、gate.io和火币(Huobi)。这些平台功能各有侧重,币安和OKEx功能强大,适合专业交易者,提供期货和杠杆交易等高级功能;Coinbase用户…

    2025年3月28日
    300
  • 全球十大虚拟币交易平台app正版下载安装教程

    本文提供Binance、OKX、Gate.io、Huobi Global(火币)、Coinbase、KuCoin(库币)、Kraken和Bitfinex等主流数字货币交易平台的安卓和苹果手机APP下载方法。无论是安卓用户还是苹果用户,都能轻…

    2025年3月13日 编程技术
    200
  • 学ps看什么书

    准备学习ps的朋友可能想找些书籍去看看,可是现在有太多相关方面的书,让人眼花缭乱。下面我的建议也许对那些入门的photoshop学习者会有些帮助的。 1.不要迷惑的众多的photoshop图书中,其实有相当大部分是重复又重复的,只是里面某些…

    2025年3月12日
    200
  • 学vuejs看什么书

    学vue可看的书有:1、“Vue.js实战”;2、“深入浅出Vue.js”;3、“Vue.js项目实战”;4、“Vue2实践揭秘”;5、“Vue.js项目开发实战”;6、“Vue.js从入门到项目实战”;7、“Vue.js权威指南”等等。 …

    2025年3月11日 编程技术
    200
  • 如何用js代码绘制一棵树

    本篇文章给大家分享的内容是如何用js代码绘制一棵树 ,有着一定的参考价值,有需要的朋友可以参考一下 第一步新建html文档:         /*设置body样式*/ body{ overflow:hidden; background: b…

    2025年3月8日
    300
  • C程序用于找到一个数的最大质因子

    Prime Factor− In number theory, the prime factors of a positive integer are the prime numbers that divide that integer e…

    2025年3月6日
    400
  • 寻找一个数的最小因子之和的C程序?

    该程序用于查找数字的最小因数之和。解决这个问题的逻辑是,找到所有因素集并将它们相加。对于每组因素,我们都会做同样的事情,然后对所有因素进行比较。然后找出这些总和中的所有最小值。 Input: n=12Output: 7 登录后复制 解释 首…

    2025年3月6日
    300

发表回复

登录后才能评论