//数据
with ta as(
select 1 id,"f1,f2" fid from dual union all
select 2,"f4,f5,f6" from dual)
,tb as(
select "f1" fid,"name1" fname from dual union all
select "f2","name2" from dual union all
select "f3","name3" from dual union all
select "f4","name4" from dual union all
select "f5","name5" from dual union all
select "f6","name6" from dual)
//结果:
ID FID FNAME
---------- -------- --------------------------------------------
1 f1,f2 name1,name2
2 f4,f5,f6 name4,name6,name5
//问题分析:
//这是一个字符串匹配问题,
//我们都知道,匹配就是在str1字符串中查找是否存在str2字符串,
//并返回一个标识,标记str2是否存在于str1里面;
//Oracle提供了一些函数供我们实现匹配功能:
//字符函数instr,contains,正则表达式函数regexp_instr;
//我们还可以通过like模糊匹配查询。
//所以上面问题的解决方法有下面几种,
//如果您还能想到更好的方法,请赐教!谢谢!
//方法一
select ta.id id,
ta.fid fid,
wm_concat(tb.fname) fname
from ta,tb
where instr(ta.fid,tb.fid)>0
group by ta.id,ta.fid;
--
//方法二
select ta.id id,
ta.fid fid,
wm_concat(tb.fname) fname
from ta,tb
where ta.fid like "%"||tb.fid||"%"
group by ta.id,ta.fid;
--
//方法三
select ta.id id,
ta.fid fid,
wm_concat(tb.fname) fname
from ta,tb
where regexp_instr(ta.fid,tb.fid)>0
group by ta.id,ta.fid; Oracle 11gR2 netca 无法启动 报错 默认主机名导致Oracle 根据行列号取值相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)