Причина в том, что с типом данных char вы сортируете строки в виде строки.
Идея ORDER BY CAST()
верна, однако производительность будет снижаться по мере увеличения числа возвращаемых результатов.
Если в этом столбце указаны только числовые данные, рекомендуется найти подходящий тип числовых данных и изменить его.
Если вы действительно не можете изменить столбец и у вас возникают проблемы с производительностью, я предлагаю иметь столбец порядка сортировки, содержащий значение, приведенное к целому числу (нули будут преобразованы в соответствующее значение).
Индексируйте столбец порядка сортировки и, в идеале, добавьте триггер к столбцу CHAR, чтобы вставки или обновления значения char инициировали обновление целочисленного значения.