Jam*_*man 12 sql sql-server sorting sql-server-2000
我想知道我们中间的SQL天才是否可以帮助我.
我VersionNo在表Versions中有一列包含'版本号'值
VersionNo
---------
1.2.3.1
1.10.3.1
1.4.7.2
Run Code Online (Sandbox Code Playgroud)
等等
我想对此进行排序,但不幸的是,当我做一个标准时order by,它被视为一个字符串,所以订单出来了
VersionNo
---------
1.10.3.1
1.2.3.1
1.4.7.2
Run Code Online (Sandbox Code Playgroud)
以下内容,这就是我所追求的:
VersionNo
---------
1.2.3.1
1.4.7.2
1.10.3.1
Run Code Online (Sandbox Code Playgroud)
所以,我需要做的是按相反的顺序排序数字(例如在abcd中,我需要按d,c,b,a排序以获得正确的排序我们).
但我仍然坚持如何以GENERIC方式实现这一目标.当然,我可以使用各种SQL函数(例如分割字符串起来left,right,substring,len,charindex),但我不能保证总是会有4个部分的版本号.我可能有这样的列表:
VersionNo
---------
1.2.3.1
1.3
1.4.7.2
1.7.1
1.10.3.1
1.16.8.0.1
Run Code Online (Sandbox Code Playgroud)
可以,有没有人有任何建议?非常感谢您的帮助.
Dam*_*ash 21
如果您使用的是SQL Server 2008
select VersionNo from Versions order by cast('/' + replace(VersionNo , '.', '/') + '/' as hierarchyid);
Run Code Online (Sandbox Code Playgroud)
编辑:
2000,2005,2008的解决方案:T-SQL排序解决方案的挑战.
| 归档时间: |
|
| 查看次数: |
5915 次 |
| 最近记录: |