一个简单的判断子串个数的函数

MySQL本身没有判断子串个数的函数。
所以我写了一个,以备参考。
函数体如下:

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`func_get_string_count`$$

CREATE FUNCTION `test`.`func_get_string_count`(
 f_str varchar(8000), f_substr varchar(255))
RETURNS int
BEGIN
  -- Created by david yeung 20080226.
  declare total int default 0;
  declare remain_str varchar(8000) default '';
  set remain_str = f_str;
  while instr(remain_str,f_substr) > 0
  do
    set total = total + 1;
    set remain_str = substring(remain_str,instr(remain_str,f_substr) + char_length(f_substr));
  end while;
  return total;
END$$

DELIMITER ;

调用结果:
select func_get_string_count('I love you love,""&&&& I love, I hate, love love love','love') as substr_count;

query result(1 records)

substr_count
6



不过你可以完全用系统提供的函数来组合。
看看例子:


set @str = 'I love you love,""&&&& I love, I hate, love love love';
set @sub_str = 'love';
select ceiling((char_length(@str) - char_length(replace(@str,@sub_str,'')))/char_length(@sub_str)) as substr_count;

结果:

query result(1 records)

substr_count
6

本文出自 “上帝,咱们不见不散!” 博客,转载请与作者联系!

转载于:https://my.oschina.net/u/585111/blog/219449

猜你喜欢

转载自blog.csdn.net/weixin_34353714/article/details/92008312
今日推荐