Mysql
 sql >> Database >  >> RDS >> Mysql

Come sommare una stringa separata da virgole in SQL?

Con grande sforzo, puoi farlo. Tuttavia, questo è davvero un pessimo modo per archiviare i dati.

Nello spirito che a volte dobbiamo utilizzare dati il ​​cui formato non è sotto il nostro controllo:

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;

Il nidificato chiamato a substring_index() recupera l'ennesimo valore nella stringa. Il concat(value, ',0') è gestire il caso in cui sono presenti meno valori rispetto alle espressioni. In questo caso, il substring_index() annidato restituirà l'ultimo valore per qualsiasi valore di n maggiore del numero di elementi nell'elenco. 0 concatenando alla lista assicura che ciò non influisca sulla somma.

SQL Fiddle è qui .