Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sumowanie kolumny oddzielonej przecinkami w MySQL 4 (nie 5)

Aby wykonać tego rodzaju nietrywialne manipulacje ciągami znaków, musisz użyć procedur składowanych, które w przypadku MySQL pojawiły się dopiero 6 lat temu w wersji 5.0.

MySQL 4 jest teraz bardzo stary, najnowsza wersja z gałęzi 4.1 to 4.1.25 w 2008 roku. Nie jest już wspierana. Większość dystrybucji Linuksa już tego nie zapewnia. Naprawdę czas na aktualizację.

Oto rozwiązanie, które działa dla 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 ;

Przykład:

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. Czy ktoś ma spory dowód na to, że CHAR jest szybszy niż VARCHAR?

  2. PHP, MySQL - czy potrafisz odróżnić wiersze dopasowane od wierszy, których dotyczy problem?

  3. LINQ to Entities nie rozpoznaje metody „System.String ToString()” i tej metody nie można przetłumaczyć na wyrażenie sklepu

  4. Znajdowanie łamania wiersza i powrotu karetki (\r\n) w MySQL

  5. Zapytanie MySQL:Używanie UNION i pobieranie numeru wiersza jako część SELECT