Mysql
 sql >> Base de données >  >> RDS >> Mysql

Somme d'une colonne séparée par des virgules dans MySQL 4 (pas 5)

Pour faire ce genre de manipulations de chaînes non triviales, il faut utiliser des procédures stockées, qui, pour MySQL, n'apparaissaient qu'il y a 6 ans, en version 5.0.

MySQL 4 est maintenant très ancien, la dernière version de la branche 4.1 était la 4.1.25, en 2008. Elle n'est plus supportée. La plupart des distributions Linux ne le fournissent plus. Il est vraiment temps de mettre à jour.

Voici une solution qui fonctionne pour 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 ;

Exemple :

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