小编典典

SQL 订单字符串作为数字

all

我将数字保存为VARCHARMySQL 数据库。INT由于其他一些情况,我无法制作它们。

排序时将它们视为字符而不是数字。

在数据库中我有

1 2 3 4 5 6 7 8 9 10...

在我的页面上,它显示了这样的有序列表:

1 10 2 3 4 5 6 7 8 9

如何使它按数字升序排列?


阅读 52

收藏
2022-08-17

共1个答案

小编典典

如果可能,如果您只存储数字,则应将列的数据类型更改为数字。

如果你不能这样做,那么将你的列值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 */
2022-08-17