Sql Server query varchar data sort вроде int

У меня есть одна таблица, например

CREATE TABLE table_name
(
P_Id int,
amount varchar(50)
)

Данные как

Id amount
----------
1 2340
2 4568
3 10000

Теперь я хочу сортировать таблицу по количеству, но одна проблема - это количество varchar, чтобы сортировать таблицу следующим образом

Id amount
----------
3 10000
1 2340
2 4568

но я хочу получить результат, подобный этому

Id amount
----------
3 10000
2 4568
1 2340

что мне делать?

Ответ 1

Введите количество столбцов в числовое число в ORDER BY при выборе:

SELECT * FROM MyTable
ORDER BY CAST(amount AS Numeric(10,0)) DESC

Результат:

╔════╦════════╗
║ ID ║ AMOUNT ║
╠════╬════════╣
║  3 ║  10000 ║
║  2 ║   4568 ║
║  1 ║   2340 ║
╚════╩════════╝

См. этот SQLFiddle

Ответ 2

Попробуйте ABS():

SELECT * FROM MyTable ORDER BY ABS(MyCol) DESC;

SQL Fiddle