You can use 10 calls for replace to get a name without numbers. Then you can calculate the number of digits by comparing the length of the name and the name without numbers:
select names , length(names) - length(non_digit) as digit_chars , length(non_digit) as non_digit_chars from ( select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace( names, '0', ''), '1', ''), '2', ''), '3', ''), '4', ''), '5', ''), '6', ''), '7', ''), '8', ''), '9', '') as non_digit , names from YourTable ) as SubQueryAlias
Example in SQL Fiddle.
source share