MySQL 如何使用ORDER BY CASE WHEN REGEXP排序查询?

MySQL 如何使用ORDER BY CASE WHEN REGEXP排序查询?

使用CASE语句和正则表达式。让我们先创建一个表 –

mysql> create table DemoTable
   (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Value varchar(20)
   );
查询成功,受影响行数为0(0.66秒)

使用插入命令向表中插入一些记录 –

mysql> insert into DemoTable(Value) values('101');
查询成功,受影响行数为1(0.20秒)

mysql> insert into DemoTable(Value) values('P');
查询成功,受影响行数为1(0.19秒)

mysql> insert into DemoTable(Value) values('A');
查询成功,受影响行数为1(0.11秒)

mysql> insert into DemoTable(Value) values('53');
查询成功,受影响行数为1(0.13秒)

mysql> insert into DemoTable(Value) values('R');
查询成功,受影响行数为1(0.12秒)

mysql> insert into DemoTable(Value) values('C');
查询成功,受影响行数为1(0.18秒)

mysql> insert into DemoTable(Value) values('190');
查询成功,受影响行数为1(0.12秒)

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

mysql> select *from DemoTable;

这将产生以下输出 –

+----+-------+
| Id | Value |
+----+-------+
| 1  | 101   |
| 2  | P     |
| 3  | A     |
| 4  | 53    |
| 5  | R     |
| 6  | C     |
| 7  | 190   |
+----+-------+
7行在集合内(0.00秒)

以下是使用ORDER BY CASE对查询进行排序的查询 –

mysql> SELECT Id, Value FROM DemoTable ORDER BY CASE
   WHEN Value REGEXP '[a-zA-Z]' THEN 0 ELSE 0+Value END ASC, Value;

这将产生以下输出 –

+----+-------+
| Id | Value |
+----+-------+
| 3  | A     |
| 6  | C     |
| 2  | P     |
| 5  | R     |
| 4  | 53    |
| 1  | 101   |
| 7  | 190   |
+----+-------+
7行在集合内(0.06秒)

阅读更多:MySQL 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程