You are trying to order the varchar column and not numeric though the value looks numeric.
Try
--Query 1
select
price
from table
order by CAST(price as numeric(10,4)) asc
--Query 2
select price from (
select CAST(price as numeric(10,4))
price
from table) T
order by price asc
Again this is just hint. Your cast function should have appropriate precision and scale based on previous post