oracle数字三位一个逗号,Oracle中某个字段里的值为逗号隔开的多个值-Oracle

Oracle中某个字段里的值为逗号隔开的多个值

最近遇到很变态的问题,某字段与另一表有字段关联关系,单位这字段存放的值是多个以逗号隔开的ID,改如何处理的问题,网上搜了下遇到此问题的人还挺不少,给一网友的问题整理了一下,转过来学习一下:

www.2cto.com

表a:

a_usr_id(字符串型,关联表b的usr_id)

123,124,125

表b:

usr_id ,   usr_name,

123        name1

124        name2

125        name3

直接用用sql语句,不用存储过程如何取得这样的数据集合:

www.2cto.com

name1,name2,name3

解决方案:

SQL> select * from test;

A_URS_ID

————————————————–

123,125

123,124,125

SQL> select * from test1;

URS_ID     URS_NAME

———- ——————–

123        name1

124        name2

125        name3

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) b

where 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;

KEY                  A_NAME

——————– ————————————————————

123,124,125          name1,name2,name3

123,125               name1,name3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值