Med stor ansträngning kan du göra detta. Men egentligen är detta ett väldigt, väldigt dåligt sätt att lagra data.
I andan att vi ibland måste använda data vars format inte är under vår kontroll:
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;
Den kapslade anropade till substring_index()
hämta det n:te värdet i strängen. concat(value, ',0')
är att hantera fallet där det finns färre värden än uttryck. I det här fallet, den kapslade substring_index()
returnerar det sista värdet för ett värde på n större än antalet objekt i listan. Sammanfogar 0
till listan säkerställer att detta inte påverkar summan.
SQL Fiddle finns här .