Я хотел проверить это с помощью скрипку или Rextester, но ни один не работает прямо сейчас. Таким образом, ваши upvotes/downvotes будут служить в качестве теста:
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
Это предполагает ряд с максимальной шириной 3 цифр, который также нули (как вы упомянули, мы можем предположить).
Если вам действительно нужно сделать это в производстве, вероятно, вы должны создать определенную пользователем функцию для обработки таких манипуляций, крайние случаи, и т.д.
Update:
Going с комментарием по @ ThorstenKettner мы могли бы обобщить этот ответ на поле number
любой длины, просто добавив больше терминов для каждой позиции цифр. Например, если мы хотим, чтобы покрыть номера, которые могут быть шириной до четырех цифр мы могли бы просто добавить этот термин:
+ CAST(SUBSTRING(number, 4, 1) AS UNSIGNED)
который либо добавить номер, если присутствует, или бы добавить ноль, если нет.
Нет, нет. –
проверить этот вопрос: http://stackoverflow.com/questions/3671921/mysql-query-for-sum-and-distinct?rq=1 – JavaQueen
Является ли ширина числа фиксированным, например. всегда 3 цифры? Я думаю, что в общем случае вам нужен UDF для этого. –