始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Oracle 解决匹配的几种方法

发布时间:  2012/9/11 17:19:16

//数据  
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; 

 


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线