我有一张表想用ID来缩短。我使用的ID有点复杂。 ID的形式是
EM_ {A-Z} {INT}
每个Id都以EM_开头,后面跟着一个字符形式A-Z和每个字母增加的INT。我想通过ID来缩短表格。当我这样做时,我得到以下结果。 作为一个例子,表格的虚构快照将是
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 | |
***
任何帮助都会非常有用。谢谢。
答案 0 :(得分:3)
您可以使用substring
按字母排序,然后按照跟随后的数字排序。
select * from tablename
order by substring(id, 4, 1), cast(substring(id, 5) as unsigned)
答案 1 :(得分:1)
子排序的第一部分是前缀EX_ ?,所以我得到了左4个字符。辅助排序是它后面的值,所以我从第5个字符开始得到它的值。
select *
from
yourtable
order by
left( id, 4 ),
abs( substr( id, 5 ));
答案 2 :(得分:0)
一个简单的查询就可以了,试试这个>
{ "FacilityName": "ACN Clinic ID" }