将带分隔符的一行分为多行
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天遇到一个没做过的需求,要把带分隔符的一行多列数据按分隔符分为多行多列插入另个表,同时别的列保持不变,想了一会感觉变化后的数据比较难和变化前的关联起来,网上看了下几个案例,感觉:https://bl
千家信息网最后更新 2026年11月03日将带分隔符的一行分为多行今天遇到一个没做过的需求,要把带分隔符的一行多列数据按分隔符分为多行多列插入另个表,同时别的列保持不变,想了一会感觉变化后的数据比较难和变化前的关联起来,网上看了下几个案例,感觉:https://blog.csdn.net/mchdba/article/details/51946573 的方法比较不错,
例如源数据是这样
目标数据是这样

insert语句为:
insert into temp_0428_test2(pro_key,nip)
with temp0 as
(select LEVEL lv from dual CONNECT BY LEVEL <= 100)
select pro_key, substr(t.vals, instr(t.vals, ',', 1, tv.lv) + 1, instr(t.vals, ',', 1, tv.lv + 1) - (instr(t.vals, ',', 1, tv.lv) + 1)) AS name
from (select pro_key,
',' || nip || ',' AS vals,
length(nip || ',') - nvl(length(REPLACE(nip, ',')), 0) AS cnt
from temp_0428_test1) t
join temp0 tv
on tv.lv <= t.cnt
order by 1;
这个方法不用和rownum做关联,避免了rownum增长后不能重置为1导致数据有缺失的问题
例如源数据是这样
目标数据是这样

insert语句为:
insert into temp_0428_test2(pro_key,nip)
with temp0 as
(select LEVEL lv from dual CONNECT BY LEVEL <= 100)
select pro_key, substr(t.vals, instr(t.vals, ',', 1, tv.lv) + 1, instr(t.vals, ',', 1, tv.lv + 1) - (instr(t.vals, ',', 1, tv.lv) + 1)) AS name
from (select pro_key,
',' || nip || ',' AS vals,
length(nip || ',') - nvl(length(REPLACE(nip, ',')), 0) AS cnt
from temp_0428_test1) t
join temp0 tv
on tv.lv <= t.cnt
order by 1;
这个方法不用和rownum做关联,避免了rownum增长后不能重置为1导致数据有缺失的问题
数据
分隔符
感觉
方法
关联
变化
一行
多行
不错
不用
同时
案例
目标
缺失
语句
问题
需求
增长
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京路客互联网科技有限公司
北京互联网科技有限公司
华宇互联网科技
齐家互联网科技
远拓互联网科技
亿账通互联网科技
沃里互联网科技
湖南洣水互联网科技有限公司扣款
互联网校园科技培训
苏州铭阳互联网科技有限公司
民营互联网公司国防科技
企晟互联网信息科技有限公司
互联网行业科技股
翼展科技 首家互联网医院
深圳无忧互联网科技
杭州披云加互联网科技有限公司
上海创道互联网络科技有限公司
悟空问答互联网科技
黑龙江互联网科技公司
前海云享互联网科技
深圳市人人互联网科技有限公司
互联网是第几次科技革命的成果
新华互联网科技学校
齐家互联网科技有限公司
撒么互联网科技公司
互联网科技英文翻译
甘肃拓世互联网科技有限公司
常德市电业局互联网科技部
燊美集互联网科技有限公司
张召忠谈中国互联网科技