MySQL将逗号拼接的字符串进行分割并求和
前言:
因为需求变动,本来某个字段只存一个数字,现在要存多个,并用逗号隔开,最后还要统计这个字段总数是多少。如果用SUBSTRING_INDEX函数或者行转列实现起来太麻烦且不美观。
于是就用一个自定义函数来实现这个需求
- 使用Navicat新建函数
2.选择函数
3.输入自定义函数名称,选择下一步
4.选择返回类型为int,然后点击完成
5.将下列方法复制保存即可
CREATE DEFINER=`root`@`%` FUNCTION `split_sum`(str VARCHAR(200)) RETURNS int(20)
DETERMINISTIC
SQL SECURITY INVOKER
BEGIN
DECLARE max_size INT(11);
DECLARE i INT(11);
DECLARE sum INT(20);
SET max_size = LENGTH(str) - LENGTH(REPLACE(str, ',', '')) + 1;
SET i = 0;
SET sum = 0;
WHILE i < max_size DO
SET i = i + 1;
SET sum = sum + SUBSTRING_INDEX(SUBSTRING_INDEX(str, ',', i),',',-1);
END WHILE;
RETURN sum;
END
6.测试效果