问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 如何将一个字段内容拆分多行显示

发布网友 发布时间:2022-04-10 22:06

我来回答

2个回答

懂视网 时间:2022-04-11 02:27

本文个人拙见,若有出入,请指出——来自菜的颤抖

场景

表A中存放了集装箱的信息,一个集装箱一条记录,表B中存放了对于集装箱操作的指令,一条指令包括多个集装箱箱号,通过分号;切割(TCIU2347687;XUTR3546865),现在的需求是,对于已经在指令表B中的集装箱,在查询表A时需要过滤掉。

  • 很容易想到的是not in, 然而分号分割。
  • 其次,not like,然而[Err] ORA-01427: 单行子查询返回多个行,表示like后面只接受模糊查询的单个值。
  • 所以必须将分号分割的记录,拆分成单独的记录。
    技术图片
    变成:
    技术图片

    实现

    Oracle可使用regexp_substr函数实现,实现上面切割的sql为:

    select regexp_substr('TCIU2347687;XUTR3546865', '[^;]+', 1, level) JZXXH
    from dual connect by level <= regexp_count('TCIU2347687;XUTR3546865', ';') + 1

    其中regexp_substr各个参数的含义:

  • TCIU2347687;XUTR3546865 表示需要分割匹配的串(我这里只是做了示例,真实情况下是表的字段)。
  • [^;]+典型的正则表达式,我这里分号切割,因此确定分割规则是多个不是分号的字符,因此遇到分号便结束,完成一个串的获取。
  • 1开始位置,最左端(Oracle下标都是1开始)
  • level表示第几个匹配上的。
    为了直观点搞清楚这个函数,比如下面的语句:
  • select REGEXP_SUBSTR('aaa;bbb','[^;]+',1,1) AS STR FROM dual; 

    结果就是aaa, 如果把第二个1变成2,输出就是bbb
    好了,这部分意图很明显了,下面就是把它每一个切割串取出来,看到上面取level个,而这个level是个什么东西呢,在这个之前,先看regexp_count(string, c)函数,这个函数其实很好理解,返回string中c的个数。
    然后就是这个level,这是一个伪列,和RowNum相似,

    SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=2; 

    技术图片
    所以再回到最初的sql,也就很好理解了。

    最后

    此致,敬礼

    Oracle通过一个字段的值将一条记录拆分为多条记录

    标签:做了   结束   下标   lol   匹配   connect   需求   rom   指令   

    热心网友 时间:2022-04-10 23:35

    用正则表达式,应该能解决你的问题
    例子,供参考,具体稍作调整
    select regexp_substr('01 a;02 b;03 c;04 d', '[^;]+', 1, level)
    from al
    connect by level <= regexp_count('01 a;02 b;03 c;04 d', '[^;]+')
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 上了年纪的人考驾照科目二时,要注意哪些要点? 后天就要考科目二了,需要注意哪些细节? 个体户开大金额增值税普票要交地税吗?| 如何写好贴子 个体工商户开据增值税普通发票多少金额需缴个人所得税 帖和贴有什么区别?帖子和贴子一样吗? 未来教育考试系统激活失败的原因? 弹钢琴的正确指法 有多少人把“贴子”的“贴”读音读错 个体户开普票税率1%到什么止 请问是贴吧还是帖吧,是贴子还是帖子,是回帖还是回贴??? 我买的未来教育计算机二级软件,之前激活过一次,重装系统之后还能再次激活么? 个体户开专票八万五千普票三十三万五千要交多少税 什么是帖子?如何发帖子? 个人开增值税普通发票要交所得税吗 贴子是什么啥意思 应该是贴子还是帖子 百度贴吧里到底是“贴子”的说法对还是“帖子”的说法对? 天呐我发现个秘密,到底是帖子还是贴子,贴吧 什么是贴子? 冰箱冷藏室为什么会报警 冰箱搬动位置后出现报警怎么解除报警? 什么红怎么填空呢? 红填颜色的词语 表示颜色的词什么红 “( )红”、“( )红”把括号填完,让颜色更具体。 填上字组成表示又同颜色的词语红填什么? ( )白( )黄( )红 填颜色 不能火红 内填水果的颜色例:苹果红&#xF34E; 什么颜色和什么颜色加起来是红色? 电信是否支持注销异地办理的电话卡呢? 北京南区口腔医院潘家园门诊部怎么样? 南区口腔医院怎么样 北京南区口腔医院团结湖门诊部怎么样? 南区口腔医院是骗人医院吗? 北京南区口腔医院 潘家园门诊部怎么样 北京南区医院拔牙好还是到口腔医院好?拔一颗槽牙多少钱? 北京南区口腔医院镶一颗右后槽牙,中档的需要多少钱呀! 北京南区口腔医院 团结湖门诊部怎么样 我在天通苑,到哪看牙好?