我想知道我们当中的 SQL 天才是否可以向我伸出援助之手。
我有一个专栏VersionNo
在表中Versions
包含“版本号”值,例如
VersionNo
---------
1.2.3.1
1.10.3.1
1.4.7.2
etc.
我正在寻找对此进行排序,但不幸的是,当我执行标准时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
可以吗,有人有什么建议吗?我们将非常感谢您的帮助。