Sql 先按字母排序,然后按数字排序

Sql 先按字母排序,然后按数字排序,sql,sql-order-by,Sql,Sql Order By,例如: 32 BB 12 A 84 H 13 H 34 C 16 C 115 H 18 C 我想这样订购: 12 A 32 BB 16 C 18 C 34 C 13 H 84 H 115 H 以下是我迄今为止所尝试的: SELECT * FROM people ORDER BY IF(data_name RLIKE '^[a-z]', 2, 3), data_name SQL查询对它们的排序方式与未排序的方式类似。我如何才能做到这一点?如果数据分为两列(这就是我解释问题和样本数据的方式),

例如:

32 BB
12 A
84 H
13 H
34 C
16 C
115 H
18 C
我想这样订购:

12 A
32 BB
16 C
18 C
34 C
13 H
84 H
115 H
以下是我迄今为止所尝试的:

SELECT *
FROM people
ORDER BY IF(data_name RLIKE '^[a-z]', 2, 3), data_name

SQL查询对它们的排序方式与未排序的方式类似。我如何才能做到这一点?

如果数据分为两列(这就是我解释问题和样本数据的方式),那么只需执行以下操作:

order by col2, col1
如果数据在一列中,那么我将根据
rlike
猜测您正在使用MySQL,您可以执行以下操作:

order by substring_index(col, ' ', -1), substring_index(col, ' ', 1) + 0

尝试按IF(data_name RLIKE'^[a-z]',4,2),data_name排序您使用的是什么数据库?数据是一列还是两列?格兰特利,结果是一样的。戈登,我想我在利用马里亚布。要么是那个,要么是InnoDB。在我发布问题之前,我试图查找它,但没有找到它:/多谢!你的回答非常有效!如果我有两列中的值,我不会问你们;)还有一个问题。我怎样才能把它倒过来排序?所以
115小时
排在列表的第一位,而
12小时
排在最后?@Erik。您可以将
DESC
放在每个
order by
键之后。