sql >> Base de Datos >  >> RDS >> Mysql

Sumar una columna separada por comas en MySQL 4 (no 5)

Para realizar este tipo de manipulaciones de cadenas no triviales, debe utilizar procedimientos almacenados que, para MySQL, solo aparecieron hace 6 años, en la versión 5.0.

MySQL 4 ahora es muy antiguo, la última versión de la rama 4.1 fue 4.1.25, en 2008. Ya no es compatible. La mayoría de las distribuciones de Linux ya no lo proporcionan. Realmente es hora de actualizar.

Aquí hay una solución que funciona para MySQL 5.0+:

DELIMITER //
CREATE FUNCTION SUM_OF_LIST(s TEXT)
  RETURNS DOUBLE
  DETERMINISTIC
  NO SQL
BEGIN
  DECLARE res DOUBLE DEFAULT 0;
  WHILE INSTR(s, ",") > 0 DO
    SET res = res + SUBSTRING_INDEX(s, ",", 1);
    SET s = MID(s, INSTR(s, ",") + 1);
  END WHILE;
  RETURN res + s;
END //
DELIMITER ;

Ejemplo:

mysql> SELECT SUM_OF_LIST("5,2.1") AS Result;
+--------+
| Result |
+--------+
|    7.1 |
+--------+