首页 > 数据库 >Oracle 根据一行数据的某个字段内容拆行(connect by level)

Oracle 根据一行数据的某个字段内容拆行(connect by level)

时间:2024-04-08 15:13:04浏览次数:23  
标签:level wo number cev connect 拆分 拆行 替换 select

 今天有个同事问我能不能根据行的指定字段内容进行拆行,例如该行字段内容:2C18E570;2C18DE70 根据 分号拆出两行

 一眼望穿,非常简单毕竟从事Oracle 已经10多年了,比这个更变态的需求都遇到过,归根还得要对 Connect by level  运用非常熟悉

 



select eco_number,
       assembly_item,
       so_number,
       no_impl_wo,
       substr(wo_number /*替换拆分的列*/,
              instr(wo_number /*替换拆分的列*/, ';', 1, levels.lvl) + 1,
              instr(wo_number /*替换拆分的列*/, ';', 1, levels.lvl + 1) -
              (instr(wo_number /*替换拆分的列*/, ';', 1, levels.lvl) + 1)) as test1 /*替换拆分的列*/

  from (select cev.eco_number,
               cev.assembly_item,
               cev.so_number,
               cev.no_impl_wo,
               --在这里增加需要显示的字段
               ';' || wo_number /*替换拆分的列*/
               || ';' as wo_number /*替换拆分的列*/,
               length(wo_number /*替换拆分的列*/) -
               nvl(length(replace(wo_number /*替换拆分的列*/, ';')), 0) + 1 as cnt
          from cux_eco_update_woso_v cev /*替换表*/
        ) a,
       (select rownum as lvl
          from (select max(length(wo_number /*替换拆分的列*/
                                  || ';') -
                           nvl(length(replace(wo_number /*替换拆分的列*/, ';')),
                               0)) max_len
                  from cux_eco_update_woso_v /*替换表*/
                )
        connect by level <= max_len) levels
 where levels.lvl <= a.cnt
 order by eco_number;

 

效果:

 

相同的:

 select eco_number,
       assembly_item,
       so_number,
       no_impl_wo,
       ssx,
       substr(wo_number /*替换拆分的列*/,
              instr(wo_number /*替换拆分的列*/, ';', 1, levels.lvl) + 1,
              instr(wo_number /*替换拆分的列*/, ';', 1, levels.lvl + 1) -
              (instr(wo_number /*替换拆分的列*/, ';', 1, levels.lvl) + 1)) as test1 /*替换拆分的列*/
          
  from (select cev.eco_number ,
               cev.assembly_item,
               cev.so_number,
               cev.no_impl_wo,
               cev.wo_number ssx,
               --在这里增加需要显示的字段
               ';' || wo_number /*替换拆分的列*/
               || ';' as wo_number /*替换拆分的列*/,
               length(wo_number /*替换拆分的列*/) -
               nvl(length(replace(wo_number /*替换拆分的列*/, ';')), 0) + 1 as cnt
          from cux_eco_update_woso_v cev /*替换表*/
        ) a,
       (select rownum as lvl
          from (select max(length(wo_number /*替换拆分的列*/
                                  || ';') -
                           nvl(length(replace(wo_number /*替换拆分的列*/, ';')),
                               0)) max_len
                  from cux_eco_update_woso_v /*替换表*/
                )
        connect by level <= max_len) levels
 where levels.lvl <= a.cnt
 order by eco_number   

 

结果:根据 2C18E570;2C18DE70  内容的分号 拆分了成了两行

 

标签:level,wo,number,cev,connect,拆分,拆行,替换,select
From: https://www.cnblogs.com/ivenlin/p/18121204

相关文章

  • 【Frida】【Android】 07_爬虫之网络通信库HttpURLConnection
    ......
  • The remote session was disconnected because there are no Remote Desktop License
    远程桌面登录报错,信息如下:TheremotesessionwasdisconnectedbecausetherearenoRemoteDesktopLicenseServersavailabletoprovidealicense.therearenoRDConnectionBrokerserversintheserverpool.Tomanageadeployment,youmustaddalltheserv......
  • 记录一下远程链接mysql报host 'xxx.xxx.xxx' is not allowed to connect to this mysq
    问题说明:服务器上的mysql本地是可以链接3306端口的,但是远程链接服务器的3306端口报错,在排除了 服务器端口和服务器防火墙 的问题之后,确定问题应该是mysql的问题解决方式:1.点击mysql命令 2.输入数据库密码 3.输入 usemysql4.输入  updateusersethost=......
  • zynq Lwip学习笔记-low_level_init函数
    这里写目录标题前言一、概述二、函数体三、调用关系前言最近在学习zynq中的lwip协议族,找不到很好的记笔记的地方,所以就用csdn记录一下自己的学习过程。现在对lwip不熟悉,只是把官方的lwipechoserver例程跑了一下,能跑通就一点点的照着学了,笔记都是根据自己的理解写的......
  • dask读取hdfs文件时报错connect hdfs error
    问题详情:/arrow/cpp/src/arrow/filesystem/hdfs.cc:51:Failedtodisconnecthdfsclient:IOError:HDFShdfsFS::Disconnectfailed,errno:9(Badfiledescriptor)Traceback(mostrecentcalllast):File"/home/tdops/fucheng.pan/ray-code/read.py",line......
  • Nginx 配置反向代理时出现 502 Bad Gateway (13_ Permission denied) while connectin
    我们在Nginx配置反向代理后,可能会出现如下报错:502BadGateway(13:Permissiondenied)whileconnectingtoupstreamSorry,thepageyouarelookingforiscurrentlyunavailable.<br/>Pleasetryagainlater.这些错误,一般是由SELinux引起的(https://stackoverf......
  • SeaTunnel DB2 Source Connector 使用文档(含详细操作步骤)
    DB2是IBM的一款关系型数据库管理系统,JDBCDB2SourceConnector是一个用于通过JDBC读取外部数据源数据的连接器。ApacheSeaTunnel如何支持JDBCDB2SourceConnector?请参考本文档。支持引擎SparkFlinkSeaTunnelZeta引擎主要特性批处理(batch)精确一次(exactly-once)列投......
  • k8s + springcloud 微服务开发调试工具kt Connect的使用
    概览KtConnect(全称KubernetesToolkitConnect)是一款基于Kubernetes环境用于提高本地测试联调效率的小工具。通过这个工具,可以不在本地启动所有服务,只需启动当前开发的服务即可,其它服务使用的是部署在k8s集群的实例,如下图:Reference官方文档:https://github.com/alibaba/......
  • gem5 CPU ISA level is lower than required
    错误提示:/lib/x86_64-linux-gnu/libc.so.6:CPUISAlevelislowerthanrequired错误截图:在互联网上搜索该错误,在gem5的邮件列表发现:Jason说在某次commit解决了这个问题,然后去这两个链接里面看一下:大概的意思是说GLIBC更新了,对硬件检查更严格了。当尝试加载动态......
  • 17、Connect-the-dots(VulnHub)
    Connect-the-dots一、nmapcatports|grepopen|awk-F'/''{print$1}'|paste-sd','>nmap_open_port_total.txt二、ftp渗透没啥三、web渗透随便看看图片隐写目录爆破没错,web端给我们的提示就是去找备份/backupsbootstrap.min.cs这个是啥c......