//數(shù)據(jù)
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)
//結(jié)果:
ID FID FNAME
---------- -------- --------------------------------------------
1 f1,f2 name1,name2
2 f4,f5,f6 name4,name6,name5
//問題分析:
//這是一個字符串匹配問題,
//我們都知道,匹配就是在str1字符串中查找是否存在str2字符串,
//并返回一個標識,標記str2是否存在于str1里面;
//Oracle提供了一些函數(shù)供我們實現(xiàn)匹配功能:
//字符函數(shù)instr,contains,正則表達式函數(shù)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;
本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|