ora可不可以把一个单元格的内容分开?

孙月魂 2012-07-12 10:00:02
比如我在一个单元格里有多个电话号码以逗号分隔,可不可以把他们分开成一列?
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
孙月魂 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

单行字段拆分为多行
with t1 as
(
select '张三' c1,'胸外科,皮肤科' c2,date'2000-11-19' c3 from dual
union all
select '李四','胸外科',date'2001-01-04' from dual
union all
select '王五','妇产科,骨科',date'2001-01-08' from d……
[/Quote]
看不懂。。。能不能说简单点。。。
hupeng213 2012-07-12
  • 打赏
  • 举报
回复
单行字段拆分为多行
with t1 as
(
select '张三' c1,'胸外科,皮肤科' c2,date'2000-11-19' c3 from dual
union all
select '李四','胸外科',date'2001-01-04' from dual
union all
select '王五','妇产科,骨科',date'2001-01-08' from dual
)

select c1,
  substr(','||c2||',',instr(','||c2,',',1,b.rn)+1,
  instr(c2||',',',',1,b.rn)-instr(','||c2,',',1,b.rn)) c2,c3
from t1,
  (select rownum rn from t1
  connect by rownum<10
--connect by rownum < nvl(length(regexp_replace(c2,'[^,]')),0)
) b
  where length(c2)-length(replace(c2,','))+1>=b.rn
order by c1,b.rn
--10这个常量也可以改为读取字段中信息:nvl(length(regexp_replace(c2,'[^,]')),0)

C1 C2 C3
------ --------------------- -------------------------
张三 胸外科 2000-11-19 00:00:00
张三 皮肤科 2000-11-19 00:00:00
李四 胸外科 2001-01-04 00:00:00
王五 妇产科 2001-01-08 00:00:00
王五 骨科 2001-01-08 00:00:00

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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