Ich wollte dies mit Fiddle oder Rextester testen, aber weder jetzt funktioniert. Also, Ihr upvotes/downvotes wird als Test dienen:
SELECT CAST(SUBSTRING(number, 1, 1) AS UNSIGNED) + -- first digit
CAST(SUBSTRING(number, 2, 1) AS UNSIGNED) + -- second digit
CAST(SUBSTRING(number, 3, 1) AS UNSIGNED) AS the_sum -- third digit
FROM yourTable
Dies setzt voraus, eine Zahl mit einer maximalen Breite von 3 Ziffern, die auch mit Nullen aufgefüllt ist (wie Sie erwähnen, dass wir annehmen können).
Wenn Sie wirklich diese in der Produktion müssen tun, sollten Sie vielleicht eine benutzerdefinierte Funktion erstellen solche Manipulationen zu handhaben, Grenzfälle usw.
Update:
mit dem Kommentar Going durch @ ThorstenKettner könnten wir diese Antwort auf ein number
Feld von jeder Länge verallgemeinern, indem wir einfach mehr Terme für jede Ziffernposition hinzufügen. Zum Beispiel, wenn wir wollten Zahlen decken, die bis zu vier Ziffern breit sein können wir einfach diesen Begriff hinzu:
+ CAST(SUBSTRING(number, 4, 1) AS UNSIGNED)
, die entweder würde eine Reihe falls vorhanden hinzufügen oder würde Null, wenn nicht hinzufügen.
Nein, gibt es nicht. –
überprüfen Sie diese Frage: http://stackoverflow.com/questions/3671921/mysql-query-for-sum-and-distinct?rq=1 – JavaQueen
Ist die Breite der Zahl festgelegt, z. immer 3 Ziffern? Ich denke im allgemeinen Fall würde man eine UDF dafür haben wollen. –