Вы можете использовать регулярные выражения, чтобы делать такие вещи:
select THECOL from ...
order by
case
when substring(THECOL from '^\d+$') is null then 9999
else cast(THECOL as integer)
end,
THECOL
Сначала вы используете регулярное выражение, чтобы определить, является ли содержимое столбца числом или нет. В этом случае я использую '^ \ d + $', но вы можете изменить его в соответствии с ситуацией.
Если регулярное выражение не совпадает, вернуть большое число, чтобы этот ряд упал до дна ордера.
Если регулярное выражение совпадает, преобразуйте строку в число, а затем отсортируйте по нему.
После этого регулярно сортируйте по столбцу.