关于一张表中一条记录某个字段进行分割处理后插入到另一张表中多条数据的存储过程写法

qq_41832622 2018-09-30 03:26:05
有两张表,表A为原始数据表,表B为结果表。表A结构如下所示
设备属地 设备名称 设备IP 结果
北京 NE80E 222.83.19.109 CR56,2103,0305;CR56,2104,0306;CR57,2105,0305;CR58,2106,0307
上海 NE60E 222.83.19.100 SR56,2111,0305;SR62,2133,0355;SR12,2121,0305;SR12,2145,0387
广州 NE50E 222.83.19.112 AR12,3611,0305;AR13,4233,0355;AR14,4321,3305;AR15,4445,5587
.... .... .... ....
表B结构如下所示
设备属地 设备名称 设备IP 单板类型 单板编码 单板描述
北京 NE80E 222.83.19.109 CR56 2103 0305
北京 NE80E 222.83.19.109 CR56 2104 0306
北京 NE80E 222.83.19.109 CR57 2105 0305
北京 NE80E 222.83.19.109 CR58 2106 0307
上海 NE60E 222.83.19.100 SR56 2111 0305
上海 NE60E 222.83.19.100 SR62 2133 0355
上海 NE60E 222.83.19.100 SR12 2121 0305
上海 NE60E 222.83.19.100 SR12 2145 0387
广州 .... .... .... .... ....
现在要对表A的数据进行处理,把A表结果字段的数据按";"分割成好几条数据后再按","分割插入到B表中,结果如B表所示,这个用存储过程怎么实现啊,小弟想了很久想不出,各位大佬有什么办法推荐下啊,拜托了,急啊。。。
...全文
389 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你比如 最长的 要拆为几个 就写几个,没那么多的直接Null值吧
卖水果的net 2018-10-01
  • 打赏
  • 举报
回复
引用 2 楼 qq_41832622 的回复:
结果这个字段的长度不定,这么处理呢,还有这三套数据只是一部分,数据也不定长度,怎么处理呢,大佬?
不管数据怎么变化,只要按 1# 的写法,略加调整,就可以实现。 建议把这个语句的原理研究透彻,自然能举一返三。
nayi_224 2018-09-30
  • 打赏
  • 举报
回复
引用 2 楼 qq_41832622 的回复:
结果这个字段的长度不定,这么处理呢,还有这三套数据只是一部分,数据也不定长度,怎么处理呢,大佬?
那就把你觉得因为长度会导致结果错误的数据列出来啊,规则你又没说清,我就照着上面数据写的。
qq_41832622 2018-09-30
  • 打赏
  • 举报
回复
结果这个字段的长度不定,这么处理呢,还有这三套数据只是一部分,数据也不定长度,怎么处理呢,大佬?
nayi_224 2018-09-30
  • 打赏
  • 举报
回复
with tab1 as (
select 'beijing' iid, 'CR56,2103,0305;CR56,2104,0306;' txt from dual union all
select 'shanghai' iid, 'CR56,2103,0305;CR56,2104,0306;' txt from dual 
),
tab2 as (
select t1.*, regexp_substr(t1.txt, '[^;]+', 1, level) r_txt
  from tab1 t1
connect by prior t1.iid = t1.iid
       and level <= regexp_count(t1.txt, ';')
       and prior dbms_random.value is not null
)
select t1.*,
       regexp_substr(t1.r_txt, '[^,]+', 1, 1) r0,
       regexp_substr(t1.r_txt, '[^,]+', 1, 2) r1,
       regexp_substr(t1.r_txt, '[^,]+', 1, 3) r2
  from tab2 t1
;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧