在 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)
上面的结果按升序排列。