以数值方式对 MySQL 中的 varchar 字段进行排序?


“LPAD(lower(column_name))”用于按数值顺序排列 MySQL 中的 varchar 字段。我们来看一个示例。

首先,我们将创建一个表。CREATE 命令用于创建表。

mysql> create table SortingvarcharDemo
   -> (
   -> List varchar(10)
   -> );
Query OK, 0 rows affected (0.82 sec)

使用 INSERT 命令插入记录。

mysql> insert into SortingvarcharDemo values("99");
Query OK, 1 row affected (0.12 sec)

mysql> insert into SortingvarcharDemo values("9");
Query OK, 1 row affected (0.17 sec)

mysql> insert into SortingvarcharDemo values("199");
Query OK, 1 row affected (0.19 sec)

mysql> insert into SortingvarcharDemo values("1");
Query OK, 1 row affected (0.11 sec)

mysql> insert into SortingvarcharDemo values("999");
Query OK, 1 row affected (0.10 sec)

mysql> insert into SortingvarcharDemo values("78");
Query OK, 1 row affected (0.17 sec)

要显示记录,请使用 select 命令。

mysql> select *from SortingvarcharDemo;

输出如下。

+------+
| List |
+------+
| 99   |
| 9    |
| 199  |
| 1    |
| 999  |
| 78   |
+------+
6 rows in set (0.05 sec)

在上面的输出中,列表未排序,既不是升序也不是降序。

要按升序或降序以数字方式对其进行排序,以下是语法。

SELECT * FROM yourTableName  ORDER BY LPAD(lower(Column_name), value1,values2) asc;

以下是查询。

mysql> SELECT * FROM SortingvarcharDemo ORDER BY LPAD(lower(List), 6,0) asc;

输出如下。

+------+
| List |
+------+
| 1    |
| 9    |
| 78   |
| 99   |
| 199  |
| 999  |
+------+
6 rows in set (0.17 sec)

在上面,结果按升序排列。

更新日期: 2019 年 7 月 30 日

浏览量 2K+

开启你的 职业生涯

完成课程认证

开始
广告