//數(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
//問(wèn)題分析:
//這是一個(gè)字符串匹配問(wèn)題,
//我們都知道,匹配就是在str1字符串中查找是否存在str2字符串,
//并返回一個(gè)標(biāo)識(shí),標(biāo)記str2是否存在于str1里面;
//Oracle提供了一些函數(shù)供我們實(shí)現(xiàn)匹配功能:
//字符函數(shù)instr,contains,正則表達(dá)式函數(shù)regexp_instr;
//我們還可以通過(guò)like模糊匹配查詢。
//所以上面問(wèn)題的解決方法有下面幾種,
//如果您還能想到更好的方法,請(qǐng)賜教!謝謝!
//方法一
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;
本文出自:億恩科技【prubsntakaful.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|