Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como somar uma string separada por vírgulas no SQL?


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 .