Вот мое решение, которое основано на функции для разделения строки, которую я нашел в нескольких местах в сети, поэтому я не уверен, за кого кредитовать, и на функции, которая использует функцию разделения для вычисления итога
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 и принял только целочисленные значения, но это, конечно, можно изменить