判断A字符串在B字符串中连续出现的最大次数

本文介绍了一个Oracle SQL函数FUN_INSTR_CNT的创建过程,该函数用于计算一个字符串中包含另一个指定字符串的实例数量。通过具体示例展示了如何使用此函数来获取不同输入字符串组合下的计数结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. create or replace function FUN_INSTR_CNT(in_str   varchar2,  
  2.                                          in_instr varchar2) return number as  
  3.   i      number := 1;  
  4.   v_lsx  varchar2(4000) default '';  
  5.   vv_lsx varchar2(4000) default '';  
  6.   v_len  number := 1;  
  7. begin  
  8.   if length(in_instr) >= 1 then  
  9.     v_len := length(in_str);  
  10.     while i <= v_len loop  
  11.       v_lsx := v_lsx || in_instr;  
  12.       i     := i + 1;  
  13.     end loop;  
  14.     
  15.     i := 1;  
  16.     while i <= v_len loop  
  17.       vv_lsx := substr(v_lsx, 1, v_len - i + 1);  
  18.       
  19.       if instr(in_str, vv_lsx) >= 1 and length(vv_lsx) >= length(in_instr) then  
  20.         return length(vv_lsx) / length(in_instr);  
  21.       end if;  
  22.       i := i + 1;  
  23.     end loop;  
  24.   end if;  
  25.   return 0;  
  26. end;  
  27. /  

执行结果

  1.    
  2. SQL> select FUN_INSTR_CNT('aafffbbfffffd','f'),FUN_INSTR_CNT('0000','1'),FUN_INSTR_CNT('101010','11'),FUN_INSTR_CNT('101010','1'),FUN_INSTR_CNT('101010','1'),FUN_INSTR_CNT('10101011','1'from dual;  
  3. ;  
  4.    
  5. FUN_INSTR_CNT('AAFFFBBFFFFFD', FUN_INSTR_CNT('0000','1') FUN_INSTR_CNT('101010','11') FUN_INSTR_CNT('101010','1') FUN_INSTR_CNT('101010','1') FUN_INSTR_CNT('10101011','1')  
  6. ------------------------------ ------------------------- ---------------------------- --------------------------- --------------------------- -----------------------------  
  7.                              5                         0                            0                           1                           1                             2  
  8.    
  9. SQL>   
  10. SQL>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值