If the field only contains numeric values, change its datatype. If the field contains both text and numbers, you need to find a way to separate the two so that the numeric values can be sorted properly.
String values are left justified and sorted column by column which is why 10 comes between 1 and 2 and not after 9 as you think it should. Numeric values are ordered based on their magnitude rather than character by character. Numeric values are essentially decimal aligned or right justified.