oracle func_multi_like函数实现模糊匹配多个

一次like多个的函数实现

create or replace function func_multi_like(p_src varchar2, p_str varchar2)  
 return number  
 is  
 v_result number default 0;  
 v_str varchar2(200);  
 v_posistion number;  
 v_sub_str varchar2(200);  --截取的STR  
 v_tmp_str varchar2(200); --截取后剩下的str  
 begin  
 --全角半角转换  
  v_str := REPLACE(p_str,',',',');  
  v_str := trim(v_str);  
    
  v_posistion:= instr(v_str,',');  
  --判断有没有逗号?  
  if v_posistion > 0 then  
  
    --有逗号 截取str  
    v_sub_str := trim(substr(v_str,0,v_posistion));  
    --截取后剩下的str  
    v_tmp_str := trim(substr(v_str,v_posistion+1 ,LENGTH(v_str)-v_posistion));  
  
    --找不到逗号时,退出  
    while v_posistion <> 0 loop  
        --重置  
        v_posistion := 0;  
      
        --如果截取下来的不仅仅是逗号,则进截取数据判断。  
        --如果有一个匹配成功,则result>0  
        if LENGTH(v_sub_str)>1 and instr(p_src,trim(substr(v_sub_str,0,LENGTH(v_sub_str)-1)))> 0   
        then     
               v_result:= instr(p_src,trim(substr(v_sub_str,0,LENGTH(v_sub_str)-1)));
               exit;  
        end if;  
  
        v_posistion:= instr(v_tmp_str,',');  
          
        v_sub_str := trim(substr(v_tmp_str,0,v_posistion));  
        v_tmp_str := trim(substr(v_tmp_str,v_posistion+1,LENGTH(v_tmp_str)-v_posistion));  
  
          
    end loop;  
         
      if instr(p_src,trim(v_tmp_str))> 0   
         then v_result:= instr(p_src,trim(v_tmp_str));  
      end if;  
          
  else  
    --没有逗号,直接匹配  
    v_result:= instr(p_src,v_str) ;  
  end if;  
  
  return v_result;  --返回0,则匹配失败,返回大于0则匹配成功。  
 end;  



输入两个参数,参数1中包含参数2则返回的结果大于0.

这里需要注意的是此函数替代的是like关键字,如果是等于的话直接用in就好了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值