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