Với nỗ lực cao, bạn có thể làm được điều này. Tuy nhiên, thực sự, đây là một cách rất, rất tệ để lưu trữ dữ liệu.
Với tinh thần là đôi khi chúng tôi phải sử dụng dữ liệu có định dạng không nằm trong tầm kiểm soát của chúng tôi:
select id,
(substring_index(value, ',', 1) +
substring_index(substring_index(concat(value, ',0'), ',', 2), ',', -1) +
substring_index(substring_index(concat(value, ',0'), ',', 3), ',', -1) +
substring_index(substring_index(concat(value, ',0'), ',', 4), ',', -1) +
substring_index(substring_index(concat(value, ',0'), ',', 5), ',', -1)
) as thesum
from t;
Lồng nhau được gọi tới substring_index()
tìm nạp giá trị thứ n trong chuỗi. concat(value, ',0')
là xử lý trường hợp có ít giá trị hơn biểu thức. Trong trường hợp này, substring_index()
lồng nhau sẽ trả về giá trị cuối cùng cho bất kỳ giá trị nào của n lớn hơn số mục trong danh sách. Nối 0
vào danh sách đảm bảo rằng điều này không ảnh hưởng đến tổng.
SQL Fiddle là đây .