我将数字以VARCHAR的形式保存到MySQL数据库中.由于其他一些情况,我不能把它们改成INT.

它是在排序时将它们作为字符而不是数字.

在我的数据库里

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

在我的页面上,它显示如下有序列表:

1 10 2 3 4 5 6 7 8 9

我如何让它看起来按数字升序排列?

推荐答案

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

如果你做不到这一点,那么用

select col from yourtable
order by cast(col as unsigned)

或者implicitly,比如一个数学运算,强制转换成数字

select col from yourtable
order by col + 0

顺便说一句,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 */

Mysql相关问答推荐

进行 MySQL COUNT 查询

如何使用 IF() 条件在 MySQL 中显示真假行

Golang Gorm 没有创建带有约束的表

如果我创建一个没有主键的表然后添加一个主键,主键是聚集索引吗?

WHERE SQL 语句中的列顺序是否重要

如何在 Mysql 中创建复合外键

mysql从另一个表中选择不相等的值

此插页中的“X”是什么> X'3C2F756C3E'

Docker(Apple Silicon/M1 Preview)MySQL“ list 列表条目中没有与 linux/arm64/v8 匹配的 list ”

绕过 MySQL“无法重新打开表”错误

MYSQL OR 与 IN 性能

无法加载身份验证插件“caching_sha2_password”

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

MySql 5.7 安装程序无法检测到 VS 2013 可再发行组件

拒绝访问;您需要(至少一个)超级权限才能执行此操作

用于 UNIX 套接字文件的 mysqld_safe 目录“/var/run/mysqld”不存在

无法在 ubuntu 16 上使用 --skip-grant-tables 重置 root 密码

php artisan migrate throwing [PDO Exception] 找不到驱动程序 - 使用 Laravel

Spring Boot JPA 使用 Hibernate 在 TABLE 中插入大写名称

Laravel 数据库模式,可以为空的外部