首页| 论坛| 消息
主题:Oracle中某个字段里的值为逗号隔开的多个值
johnguojie发表于 2016-07-27 16:07
(来源:asi12的博客)字段与另一表有字段关联关系,单位这字段存放的值是多个以逗号隔开的ID,该如何处理的问题,:
表a: a_usr_id(字符串型,关联表b的usr_id)
123,124,125
表b: usr_id , usr_name,
123name1
124name2
125name3
直接用用sql语句,不用存储过程如何取得这样的数据集合:name1,name2,name3
解决方案:SQL> select * from test;
A_URS_ID
123,125
123,124,125
SQL> select * from test1;
URS_ID URS_NAME
123name1
124name2
125name3
SQL> with split_data as (
select key, rn, substr(str, instr(str, ',', 1, rn)+1,
instr(str, ',', 1, rn+1) - instr(str, ',', 1, rn) - 1) str from (select a_urs_id key, ','||a_urs_id||',' str from test) a,
(select rownum rn from dual connect by rownum < 10) bwhere instr(str, ',', 1, rn+1) > 0 )
select key, substr(max(sys_connect_by_path(urs_name, ',')), 2) a_name
from split_data a, test1 b
where a.str = b.urs_id
start with rn = 1
connect by key = prior key and rn-1 = prior rn
group by key;

输出结果如下:
KEYA_NAME
123,124,125name1,name2,name3
123,125 name1,name3

我的问题是如果test 在test1中有的数值不存在,比如test表A_user
_id 出现了 128,123,而128在test1中就没有,我想要的结果name1,但是按照以上程序是找不到name1的,请问这种情况这个程序怎么样写才对,谢谢大神帮忙!
回帖(5):
5楼:支持,顶!
内容来自[手机版]
4楼:新人看着很头晕哦。
3楼:有无完整编排或截图有点看不清呢!

全部回帖(5)»
最新回帖
收藏本帖
发新帖