oracle 拆分字段成多条记录

blob.png

如图,我想把jsxm这个字段,带'/'号的记录拆分成多条记录。一个姓名对应一条数据,sql语句应该怎么写?我是ORACLE10G的数据库


select '(2017-2018-1)-03203058-018015-1' xkkh,'03203058' kcdm,'0102001' jszgh,'文三/刘三群/沈三平' jsxm from dual
union
select '(2017-2018-1)-03203058-018015-2' xkkh,'03203058' kcdm,'0102001' jszgh,'文三/沈三平' jsxm from dual
union
select '(2017-2018-1)-5105002Y-018015-1' xkkh,'5105002Y' kcdm,'0102001' jszgh,'文三' jsxm from dual


405812832 发布于 2019-3-27 15:16 (编辑于 2019-3-27 15:21)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
flyingsnakeLv6资深互助
发布于2019-3-27 15:16(编辑于 2019-3-27 15:17)

https://www.cnblogs.com/yewg/p/5510594.html



https://blog.csdn.net/chuanqi_/article/details/81777773

  • 405812832 405812832(提问者) 大佬,我把语句加上去了,能不能帮忙写一下,感谢
    2019-03-27 15:22 
  • flyingsnake flyingsnake 回复 405812832(提问者) select xkkh,kcdm,jszgh, regexp_substr(jsxm,\'[^/]+\',1,level) as jsxm from 表名字 connect by level <= regexp_count(jsxm,\'/\')+1 order by xkkh
    2019-03-27 15:33 
最佳回答
0
KevinGaoLv2初级互助
发布于2019-3-27 15:26

select '(2017-2018-1)-03203058-018015-1' xkkh,'03203058' kcdm,'0102001' jszgh,a.k jsxm from dual d,(SELECT REGEXP_SUBSTR ('文三/刘三群/沈三平', '[^/]+', 1,rownum) k from dual connect by rownum<=LENGTH ('文三/刘三群/沈三平') - LENGTH (regexp_replace('文三/刘三群/沈三平', '/', ''))+1) a

  • 405812832 405812832(提问者) 这个是一条记录拆分的,我也会写。我需要多条记录拆分的
    2019-03-27 15:30 
  • KevinGao KevinGao 回复 405812832(提问者) 你union起来的以此类推不行么?
    2019-03-27 15:32 
  • 405812832 405812832(提问者) 回复 KevinGao 起码1万条记录啊
    2019-03-27 15:33 
  • KevinGao KevinGao 回复 405812832(提问者) 渔不是鱼,把你的查询语句贴出来,我看看
    2019-03-27 15:35 
最佳回答
0
wukaihuaLv5初级互助
发布于2019-3-28 15:15

image.png

with x as (

select '(2017-2018-1)-03203058-018015-1' xkkh,'03203058' kcdm,'0102001' jszgh,'文三/刘三群/沈三平' jsxm from dual

union

select '(2017-2018-1)-03203058-018015-2' xkkh,'03203058' kcdm,'0102001' jszgh,'文三/沈三平' jsxm from dual

union

select '(2017-2018-1)-5105002Y-018015-1' xkkh,'5105002Y' kcdm,'0102001' jszgh,'文三' jsxm from dual

)


select distinct xkkh,kcdm,jszgh, regexp_substr(jsxm,'[^/]+',1,level) as jsxm 

from x

connect by  regexp_instr(jsxm, '[^/]+',1,level)>0


order by xkkh


  • 4关注人数
  • 1141浏览人数
  • 最后回答于:2019-3-28 15:15
    请选择关闭问题的原因
    确定 取消
    返回顶部