Mysql
 sql >> база данни >  >> RDS >> Mysql

Сумиране на колона, разделена със запетая в MySQL 4 (не 5)

За да извършите този вид нетривиални манипулации с низове, трябва да използвате съхранени процедури, които за MySQL се появиха едва преди 6 години, във версия 5.0.

MySQL 4 вече е много стар, последната версия от клон 4.1 беше 4.1.25 през 2008 г. Вече не се поддържа. Повечето дистрибуции на Linux вече не го предоставят. Наистина е време да надстроите.

Ето решение, което работи за 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 ;

Пример:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Отказ на база данни в Jboss източници на данни

  2. Как може една заявка да умножи 2 клетки за всеки ред MySQL?

  3. Ляво присъединяване, използвайки критерии за хибернация

  4. Датата на PHP/Mysql е запазена като '0000-00-00'

  5. Как да подобрим производителността на INSERT в много голяма MySQL таблица