是否可以通过在数据库中存储为字符串的数字来查询顺序,以按降序获取数据作为数字

时间:2012-01-16 13:32:42

标签: mysql select

我已经在数据库中以字符串的形式存储了一些数字,现在我想按降序检索它们,因为数据库中的数字可以这样做,我怎样才能实现这个

select * from article order by numbers DESC

它导致数字的顺序为

90
89
88
1000
10
1

5 个答案:

答案 0 :(得分:2)

您将数字存储为varchar。不是数字。他们正在排序为字符串

SELECT numbers 
FROM article 
ORDER BY CAST(numbers AS INT) DESC;

如果他们是数字,请将它们存储起来。由于CAST

,您还无法使用索引对此排序进行优化

答案 1 :(得分:1)

您无需单独选择它们,只需将ORDER BY部分指定为数字即可。

SELECT * FROM article ORDER BY CAST(numbers AS SIGNED) DESC;

答案 2 :(得分:0)

您需要指定确切的列,以便SQL可以使用您需要转换的CAST()函数。

SELECT CAST(numbers AS INT) FROM article ORDER BY numbers DESC

这将以正确的顺序返回数字,而不是按字母顺序排序。

答案 3 :(得分:0)

我认为“String”的意思是“VARCHAR”。使用INT并将数字存储为数字将为您节省很多麻烦。

如果你真的无法避免以这种方式存储这些数字,你可以随时用零填充到一定的大小,以便按正确的顺序返回它们。

答案 4 :(得分:-1)

select * from article order by numbers DESC

有两个选项:DESC(结束)和ASC(结束)(ASC是默认值)。