Sort varchar by its numeric fields
I would convert that value to an integer array, then sort on that array:
SELECT number 
FROM orders 
ORDER BY string_to_array(number, '-')::int[] 
LIMIT 10;

Online example