1

我已经尝试了明显的select min(version) from t方法,但这不起作用,因为引擎认为(并且正确地)字符串'1.12.0.0'小于'1.2.0.0',这显然不是版本号的情况.

我知道我可以轻松地动态拆分 4 个数字(使用计算列或视图),然后我可以使用select top 1 row from myview order by a asc, b asc, c asc, d asc

...但我很想知道是否有更简单的方法来实现这一目标

4

1 回答 1

3

如果您的版本号最多包含 4 个以点分隔的数字,则可以滥用该parsename功能:

select  top 1 *
from    Versions
order by
        cast(parsename(Version, 4) as int)
,       cast(parsename(Version, 3) as int)
,       cast(parsename(Version, 2) as int)
,       cast(parsename(Version, 1) as int)

SQL Fiddle 上的实时示例。

于 2012-12-14T10:09:52.257 回答