我将数字保存为VARCHARMySQL 数据库。INT由于其他一些情况,我无法制作它们。
VARCHAR
INT
排序时将它们视为字符而不是数字。
在数据库中我有
1 2 3 4 5 6 7 8 9 10...
在我的页面上,它显示了这样的有序列表:
1 10 2 3 4 5 6 7 8 9
如何使它按数字升序排列?
如果可能,如果您只存储数字,则应将列的数据类型更改为数字。
如果你不能这样做,那么将你的列值integer 明确地 转换为
integer
select col from yourtable order by cast(col as unsigned)
或 隐含地 ,例如使用强制转换为数字的数学运算
select col from yourtable order by col + 0
BTW MySQL 从左到右转换字符串。例子:
string value | integer value after conversion --------------+-------------------------------- '1' | 1 'ABC' | 0 /* the string does not contain a number, so the result is 0 */ '123miles' | 123 '$123' | 0 /* the left side of the string does not start with a number */