Hola,
Pues ese orden es el correcto, si es que son cadenas de texto. Supongo que habras definido ese campo como un CHAR o un VARCHAR.
Una solucion seria cambiar ese campo a un tipo numerico (INT por ejemplo).
Y otra seria convertir para la consulta a un tipo numerico. Se puede hacer asi:
Código PHP:
ORDER BY num_cos+0
No se si es standard o si hay otra forma mejor.
Y otra forma seria crear un alias del campo modificado con la funcion LPAD para añadir 0 a la izquierda:
SELECT *,LPAD(num_cos,10,'0') as nom_cos_2 FROM cosas WHERE idcosa='$id' ORDER BY num_cos_2 ASC
Asi num_cos_2 tendra 10 digitos (puedes poner los que te de la gana), y si num_cos tenia solo 5, añadira 5 ceros a la izquierda.
Pero ya te digo que no se si habra otra forma mas directa.
Suerte.