sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo sumar una cadena separada por comas en SQL?

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í .