先按字母排序数据,再按数字排序

Sort data after letters first, then digits

示例:

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