繁体   English   中英

SQL查询复杂的ID

[英]SQL query for complex IDs

我有一个要通过ID缩写的表。我使用的ID有点复杂。 ID的形式为

EM_ {AZ} {} INT

每个Id以EM_开头,后跟一个字符形式AZ和每个字母一个递增的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 |     |
         ***    

任何帮助都将非常有用。

您可以使用substring按字母顺序排列,然后按数字排列。

摆弄样本数据

select * from tablename
order by substring(id, 4, 1), cast(substring(id, 5) as unsigned)

子排序的第一部分是前缀EX_ ?,所以我得到了LEFT 4个字符。 次要排序是它之后的值,因此我从第5个字符开始获取该值。

select *
   from 
      yourtable 
   order by 
      left( id, 4 ), 
      abs( substr( id, 5 ));

一个简单的查询就可以了,试试这个>

select * from tablename ORDER By ID ASC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM