我已经在数据库中以字符串的形式存储了一些数字,现在我想按降序检索它们,因为数据库中的数字可以这样做,我怎样才能实现这个
select * from article order by numbers DESC
它导致数字的顺序为
90
89
88
1000
10
1
答案 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是默认值)。