Вы можете использовать оператор SIMILAR TO
, т. Е.
ORDER BY
CASE
WHEN charfield SIMILAR TO '[0-9]+' THEN CAST(charfield AS INTEGER)
ELSE 9999999
END
Если в поле есть начальные или конечные пробелы, то вам нужно использовать функцию TRIM()
, чтобы избавиться от них перед тестом, т.е.
WHEN TRIM(charfield) SIMILAR TO ...
И чтобы разрешить отрицательные числа, вы должны изменить шаблон так, чтобы он включал -
, то есть предложение стало бы
ORDER BY
CASE
WHEN TRIM(charfield) SIMILAR TO '\-?[0-9]+' ESCAPE '\' THEN CAST(charfield AS INTEGER)
ELSE 9999999
END