在 MySQL 中按数字对 varchar 字段进行排序?

mysqlmysqli database

"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)

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

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)

上面的结果按升序排列。


相关文章