Com muito esforço, você pode fazer isso. Realmente, porém, esta é uma maneira muito, muito ruim de armazenar dados.
No espírito de que às vezes temos que usar dados cujo formato não está sob nosso controle:
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;
A chamada aninhada para
substring_index()
buscar o enésimo valor na string. O concat(value, ',0')
é lidar com o caso em que há menos valores do que expressões. Neste caso, o substring_index()
aninhado retornará o último valor para qualquer valor de n maior que o número de itens na lista. Concatenando 0
à lista garante que isso não afete a soma. O SQL Fiddle está aqui .