数据排序后的字母,然后再数字

问题描述:

例子:数据排序后的字母,然后再数字

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查询按类似于未排序的方式对它们进行排序。我怎样才能做到这一点?

+0

尝试ORDER BY IF(DATA_NAME RLIKE '^ [az]' 可以,4,2),DATA_NAME – Grantly

+1

什么数据库您使用的?数据是在一列还是两列? –

+0

同样的结果,重要。我想我正在使用MariaDB,Gordon。无论是那个还是InnoDB。我在发布问题之前试图查看它,但没有找到它:/ – Erik

如果数据是在两列(这是我如何解释的问题和样本数据),然后简单地做:

order by col2, col1 

如果数据是在一列,然后我会从rlike猜测您正在使用MySQL,你可以这样做:

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

非常感谢!你的答案完美无缺!如果我有两列的值,我不会问你们;) – Erik

+0

但还有一个问题。我该如何对它进行分类?所以'115 H'在列表中首先出现,并且'12 A'最后一次? – Erik

+1

@Erik。 。 。您在每个按'order by'键后放置'DESC'。 –