Con gran esfuerzo, puedes hacer esto. Realmente, sin embargo, esta es una forma muy, muy mala de almacenar datos.
En el espíritu de que a veces tenemos que usar datos cuyo formato no está bajo nuestro control:
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;
La llamada anidada a substring_index()
recuperar el valor n en la cadena. El concat(value, ',0')
es manejar el caso donde hay menos valores que expresiones. En este caso, el substring_index()
anidado devolverá el último valor para cualquier valor de n mayor que el número de elementos de la lista. Concatenando 0
a la lista asegura que esto no afecte la suma.
El SQL Fiddle está aquí .