oracle 表字段拆分,oracle 字段拆分

场景:Oracle 字段拆分有关问题

Oracle 字段拆分问题

我现在有一个字段是存:1,2,3的,而它对应另一张值集表中。eg;

课程人员表

id    name     Course

1     张三      1,2,3

值集表

code    name

1       语文

2       数字

3       英语

………………

course 与code 关联    如何查询出结果为:

张三    语文,数字,英语

各位大侠帮帮在下啊。

Oracle

字段拆分

分享到:

------解决方案--------------------

小数据量可以 大了可以考虑存储

with t1 as

(

select 1 id,'张三' name,'1,2,3' course from dual union all

select 2 id,'李四' name,'1,3,4' course from dual

),t2 as

(

select 1 code,'语文' name from dual union all

select 2 code,'数字' name from dual union all

select 3 code,'英语' name from dual union all

select 4 code,'历史' name from dual

)

select peo,wm_concat(c_name) c_name

from

(

select t.id,t.name peo,t2.code,t2.name c_name

from

(

select distinct id,name,replace(regexp_substr(course,'[^,]+',1,level),',',' ') course

from t1

connect by level<=length(course)-length(replace(course,',',''))+1

) t,t2

where t.course = t2.code

)

group by peo

peo        c_name

--------------------------------------

1李四语文,英语,历史

2张三语文,英语,数字

------解决方案--------------------

with t1 as

(select '1' id, '张三' name, '1,2,3' course

from dual

union

select '1' id, '李四' name, '2,4' course from dual),

t2 as

(select '1' code, '语文' name

from dual

union

select '2' code, '数学' name

from dual

union

select '3' code, '英语' name

from dual

union

select '4' code, '物理' name from dual)

select t1.name, dbms_lob.substr(wm_concat(t2.name))

from t1, t2

where instr(','

------解决方案--------------------

t1.course

------解决方案--------------------

',', ','

------解决方案--------------------

t2.code

------解决方案--------------------

',') > 0

group by t1.name

NAME       COURSES

---------- --------------------

李四       数学,物理

张三       语文,英语,数学

方法土了点,但应该符合要求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值