We can try using the
ASCII function here along with a
CASE WHEN LEFT(mycol, 1) LIKE '[A-Z]' THEN 0 ELSE 1 END,
CASE WHEN RIGHT(mycol, 1) LIKE '[A-Z]' THEN 0 ELSE 1 END,
The logic here uses four levels of sorting, a pair for each of the two characters in
CASE expressions put letters before numbers. After this, we simply sort ascending by number or letter.
One other approach to this would be to treat your column as a base 36 number (10 digits plus 26 letters), and then just sort based on that number converted back to a base 10 decimal. But, this might be uglier and more convoluted than the solution I posted above.