如何在 MySQL 中按 DESC 或 ASC 对 varchar 数字列进行排序?

mysqlmysqli database更新于 2025/10/4 8:12:17

首先我们创建一个表 −

mysql> create table DemoTable726 (Value varchar(100));
Query OK, 0 rows affected (0.60 sec)

使用 insert 命令在表中插入一些记录 −

mysql> insert into DemoTable726 values('100');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable726 values('10');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable726 values('110');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable726 values('2000');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable726 values('1000');
Query OK, 1 row affected (0.14 sec)

使用 select 语句显示表中的所有记录 −

mysql> select *from DemoTable726;

这将产生以下输出 -

+-------+
| Value |
+-------+
| 100   |
| 10    |
| 110   |
| 2000  |
| 1000  |
+-------+
5 rows in set (0.00 sec)

以下是按升序对 varchar 数字列进行排序的查询 −

mysql> select *from DemoTable726 order by CAST(Value AS DECIMAL(20,2));

这将产生以下输出 -

+-------+
| Value |
+-------+
| 10    |
| 100   |
| 110   |
| 1000  |
| 2000  |
+-------+
5 rows in set (0.00 sec)

以下是按降序排序并显示结果的查询 −

mysql> select *from DemoTable726 order by CAST(Value AS DECIMAL(20,2)) DESC;

这将产生以下输出 -

+-------+
| Value |
+-------+
| 2000  |
| 1000  |
| 110   |
| 100   |
| 10    |
+-------+
5 rows in set (0.00 sec)

相关文章


有用资源