Để thực hiện loại thao tác chuỗi không tầm thường này, bạn cần sử dụng các thủ tục được lưu trữ, đối với MySQL, chỉ mới xuất hiện cách đây 6 năm, trong phiên bản 5.0.
MySQL 4 hiện đã rất cũ, phiên bản mới nhất từ nhánh 4.1 là 4.1.25, vào năm 2008. Nó không được hỗ trợ nữa. Hầu hết các bản phân phối Linux không cung cấp nó nữa. Đã đến lúc nâng cấp.
Đây là một giải pháp hoạt động cho 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 ;
Ví dụ:
mysql> SELECT SUM_OF_LIST("5,2.1") AS Result;
+--------+
| Result |
+--------+
| 7.1 |
+--------+