首页 > 解决方案 > 有没有办法按包含数字的字符串字段,按数字的值排序?

问题描述

我有由字母和数字构成的 record_id 列的记录

例如

a1
a2
a11
a12
b1

如果我对此进行排序,我会得到

a1
a11
a12
a2
b1

我想知道是否有办法按字母排序,然后按数字的值,如下所示

a1
a2
a11
a12
b1

标签: mysql

解决方案


DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(string CHAR(3) NOT NULL);

INSERT INTO my_table VALUES
('a2'),('a11'),('a12'),('b1');

select * FROM my_table ORDER BY string;
+--------+
| string |
+--------+
| a11    |
| a12    |
| a2     |
| b1     |
+--------+

select * FROM my_table ORDER BY string+0;
+--------+
| string |
+--------+
| a2     |
| a11    |
| a12    |
| b1     |
+--------+

现在认真考虑规范化您的数据。


推荐阅读