Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie summiere ich eine durch Kommas getrennte Zeichenfolge in SQL?

Mit großem Aufwand können Sie dies tun. Dies ist jedoch wirklich eine sehr, sehr schlechte Art, Daten zu speichern.

In dem Sinne, dass wir manchmal Daten verwenden müssen, deren Format sich unserer Kontrolle entzieht:

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;

Der verschachtelte Aufruf von substring_index() Holen Sie sich den n-ten Wert in der Zeichenfolge. Der concat(value, ',0') soll den Fall handhaben, in dem es weniger Werte als Ausdrücke gibt. In diesem Fall der verschachtelte substring_index() gibt den letzten Wert für jeden Wert von n zurück, der größer als die Anzahl der Elemente in der Liste ist. Verketten von 0 in die Liste stellt sicher, dass sich dies nicht auf die Summe auswirkt.

Die SQL-Fiddle ist hier .