【发布时间】:2011-03-29 08:10:45
【问题描述】:
我想知道我们当中的 SQL 天才是否可以帮我一把。
我在表 Versions 中有一个列 VersionNo,其中包含“版本号”值,例如
VersionNo
---------
1.2.3.1
1.10.3.1
1.4.7.2
等等
我希望对此进行排序,但不幸的是,当我执行标准 order by 时,它被视为字符串,因此排序结果为
VersionNo
---------
1.10.3.1
1.2.3.1
1.4.7.2
以下是我所追求的:
VersionNo
---------
1.2.3.1
1.4.7.2
1.10.3.1
所以,我需要做的是按相反的顺序对数字进行排序(例如,在 a.b.c.d 中,我需要按 d、c、b、a 排序以获得正确的排序)。
但我不知道如何以通用的方式实现这一目标。当然,我可以使用各种 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
可以,有人有什么建议吗?非常感谢您的帮助。
【问题讨论】:
-
在最后一种情况下,如果你没有 4 个要排序的东西,你希望它如何排序?
-
看起来。那是我的问题,如果解决了就轻而易举了。
标签: sql sql-server sorting sql-server-2000