我有一个表,我想用ID.The ID来缩短它,但我使用的表有点复杂。is的形式是
EM_{A}{INT}
其中,每个Id都以EM_开头,后面跟着一个字符形式an,并对每个字母增加一个INT。我想通过ID.When缩短表,我这样做,我得到了以下结果。例如,表中的假想快照将为
ID |Title|Year
--------------------
EM_A1 | |
EM_A10 | |
EM_A2 | |
***
EM_A9 | |
***
EM_C1 | |
EM_C10 | |
EM_C11 | |
EM_C2 | |
EM_C20 | |
***
EM_C9 | |
***
我想要创建一个查询,作为一个例子,该查询返回带有正确的按ID排序的表。
ID |Title|Year
--------------------
EM_A1 | |
EM_A2 | |
***
EM_A9 | |
EM_A10 | |
***
EM_C1 | |
EM_C2 | |
***
EM_C9 | |
EM_C10 | |
EM_C11 | |
***
EM_C20 | |
***
任何帮助都将是非常useful.Thanks的提前。
发布于 2015-10-26 17:13:56
您可以使用substring
先按字母排序,然后再按后面的数字排序。
篡改样本数据
select * from tablename
order by substring(id, 4, 1), cast(substring(id, 5) as unsigned)
发布于 2015-10-26 17:35:38
子排序的第一部分是前缀EX_?,所以我得到了4个字符。二次排序是它之后的值,所以我从第五个字符开始得到它的值。
select *
from
yourtable
order by
left( id, 4 ),
abs( substr( id, 5 ));
发布于 2015-10-26 17:40:52
一个简单的查询就可以了,尝试this>
select * from tablename ORDER By ID ASC
https://stackoverflow.com/questions/33351590
复制相似问题