繁体   English   中英

如何对MySQL varchar字段值求和

[英]How to sum MySQL varchar field value

我有一个用于total_amount的Varchar字段,该字段的内容类似于1 + 1 + 1

我需要对这一栏进行总结。

这是我的解决方案,该解决方案基于将在网上多个地方找到的字符串进行拆分的函数,因此我不确定要归功于谁,以及使用split函数计算总数的函数

DELIMITER $$

CREATE FUNCTION `CalcTotal`(input VARCHAR(255)) RETURNS int(11)
DETERMINISTIC
BEGIN
  DECLARE pos int;
  DECLARE result int;
  DECLARE value_str VARCHAR(255);

  SET pos = 1;
  SET result = 0;
  SET value_str = '0';

  WHILE value_str <> '' DO
    SET value_str = SPLIT_STR(input, '+', pos);
    IF value_str <> '' THEN
      SET result = result + value_str;
      SET pos = pos + 1;
    END IF;
  END WHILE;

  RETURN (result);
END$$

CREATE FUNCTION `SPLIT_STR`(x VARCHAR(255), delim VARCHAR(12), pos INT) RETURNS varchar(255)
DETERMINISTIC
BEGIN 
  RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
         LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, '');
END$$

DELIMITER ;

要使用它,请执行以下操作

SELECT CalcTotal(total_amount) 
FROM some_table

请注意,我已将varchar的最大长度设置为255,并仅假定了整数值,但这当然可以修改

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM