Arc*_*hit 14 sql sql-server sql-order-by
我有一张桌子
CREATE TABLE table_name
(
P_Id int,
amount varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
数据类似
Id amount
----------
1 2340
2 4568
3 10000
Run Code Online (Sandbox Code Playgroud)
现在我想按数量对表进行排序,但是一个问题是数量是varchar,所以它像这样对表进行排序
Id amount
----------
3 10000
1 2340
2 4568
Run Code Online (Sandbox Code Playgroud)
但我想要这样的结果
Id amount
----------
3 10000
2 4568
1 2340
Run Code Online (Sandbox Code Playgroud)
我该怎么办 ?
him*_*056 20
ORDER BY
在选择时将数量列转换为Numeric in 子句:
SELECT * FROM MyTable
ORDER BY CAST(amount AS Numeric(10,0)) DESC
Run Code Online (Sandbox Code Playgroud)
结果:
???????????????
? ID ? AMOUNT ?
???????????????
? 3 ? 10000 ?
? 2 ? 4568 ?
? 1 ? 2340 ?
???????????????
Run Code Online (Sandbox Code Playgroud)
aiz*_*zaz 14
试试ABS():
SELECT * FROM MyTable ORDER BY ABS(MyCol) DESC;
Run Code Online (Sandbox Code Playgroud)