我有这个数据:
nov_id
2.1.1
2.1.10
2.1.11
2.1.12
2.1.13
2.1.14
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.1.7
2.1.8
2.1.9
2.2
2.3
2.4
2.5
2.6
我需要订购我的结果,所以我的预期结果是这样的:
nov_id
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.1.7
2.1.8
2.1.9
2.1.10
2.1.11
2.1.12
2.1.13
2.1.14
2.2
2.3
2.4
2.5
2.6
这是我的尝试之一:
Select nov_id
From dbo.NS_tbl_sc_novedad
Order by Convert(int,Left(Ltrim(Rtrim(replace(nov_id,'.','')))+'0000',4));
我试图粘贴一些零并按其排序,但显然我还没有明白。
最佳答案
对于您的特定数据,这将起作用:
order by left(mov_id, 3),
len(mov_id),
mov_id
想法是按长度排序,因为末尾的数字越小,长度越短——给定值的存储方式。
这可以修改为更通用,具体取决于您的数据的实际情况。
关于sql - 如何按multipart X.Y[.Z] "version"数字对查询结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28348013/