SQlite自然排序

时间:2014-03-25 18:44:52

标签: sqlite

我有一个这样的数据表:

Index       Stage_Id    
1           V8R0.11.0     
2           V8R0.10.0     
3           V8R0.9.0        
4           V8R0.8.0        
5           V8R0.7.0        
6           V8R0.6.0        
7           V8R0.5.0        
8           V8R0.4.0        
9           V8R0.3.0        
10          V8R0.2.0       
11          V8R0.1.0        
12          V8R0.13.0       
12          V8R0.12.0        
12          V8R0.11.0        

我想自然地排序,即最后三个记录应该在V8R0.11.0之前。

1 个答案:

答案 0 :(得分:0)

instr搜索第一期的位置; substr提取所有字符串后跟;并且CAST将其转换为数字,忽略第二期后的所有内容:

SELECT *
FROM ATableOfData
ORDER BY CAST(substr(Stage_Id, instr(Stage_Id, '.') + 1) AS INTEGER)