Med stor indsats kan du gøre dette. Virkelig, men dette er en meget, meget dårlig måde at gemme data på.
I den ånd, at vi nogle gange er nødt til at bruge data, hvis format ikke er under vores kontrol:
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 indlejrede kaldet til substring_index()
hent den n'te værdi i strengen. concat(value, ',0')
er at håndtere det tilfælde, hvor der er færre værdier end udtryk. I dette tilfælde, den indlejrede substring_index()
returnerer den sidste værdi for enhver værdi på n større end antallet af elementer på listen. Sammenkædning af 0
til listen sikrer, at dette ikke påvirker summen.
SQL Fiddle er her .