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 |
本文转自 yarin 51CTO博客,原文链接:http://blog.51cto.com/yueliangdao0608/81265,如需转载请自行联系原作者