MySQL中字母数字排序,用于混合数字的字符串

假设您在表中有一个VARCHAR列,其值是字符串,数字在右侧。例如-

John1023
Carol9871
David9098

现在,考虑您要基于整列中的这些右侧数字进行排序。为此,请使用ORDER BY RIGHT。

让我们首先创建一个表-

create table DemoTable757 (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ClientId varchar(100)
);

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

insert into DemoTable757(ClientId) values('John1023');
insert into DemoTable757(ClientId) values('Carol9871');
insert into DemoTable757(ClientId) values('David9098');
insert into DemoTable757(ClientId) values('Adam9989');
insert into DemoTable757(ClientId) values('Bob9789');

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

select *from DemoTable757;

这将产生以下输出-

+----+-----------+
| Id | ClientId  |
+----+-----------+
|  1 | John1023  |
|  2 | Carol9871 |
|  3 | David9098 |
|  4 | Adam9989  |
|  5 | Bob9789   |
+----+-----------+
5 rows in set (0.00 sec)

以下是在MySQL中查询字母数字顺序-

select Id,ClientId from DemoTable757 order by right(ClientId,4);

这将产生以下输出-

+----+-----------+
| Id | ClientId  |
+----+-----------+
|  1 | John1023  |
|  3 | David9098 |
|  5 | Bob9789   |
|  2 | Carol9871 |
|  4 | Adam9989  |
+----+-----------+
5 rows in set (0.00 sec)