S velkým úsilím to dokážete. Ve skutečnosti je to však velmi, velmi špatný způsob ukládání dat.
V duchu toho, že někdy musíme používat data, jejichž formát není pod naší kontrolou:
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;
Vnořené volání substring_index()
načte n-tou hodnotu v řetězci. concat(value, ',0')
je zvládnout případ, kdy existuje méně hodnot než výrazů. V tomto případě vnořený substring_index()
vrátí poslední hodnotu pro jakoukoli hodnotu o n větší, než je počet položek v seznamu. Zřetězení 0
do seznamu zajistí, že to neovlivní součet.
SQL Fiddle je zde .