SQL Server:如何排序和比较许多版本?

1 sql sql-server versioning

在我对表的请求中,我必须找到版本小于或等于10.0.1703(<= 10.0.1703)的版本的所有行,并且有很多版本.我使用SQL Server.结果中所需的行的示例是:

在此输入图像描述

id | name | build(version)
--------------------------
1  | A    | 10.0.1703
2  | B    | 6.3.9600
Run Code Online (Sandbox Code Playgroud)

我必须找到所有旧版本或等于10.0.1703的版本.6.3.9600小于10.0.1703

它与这个问题有关,但提供的解决方案对我来说很难理解 如何比较使用SQL Server的软件版本?

Mar*_*ith 5

一种方式是施展为 hierarchyid

WHERE CAST('/' + build + '/' AS HIERARCHYID) <= CAST('/10.0.1703/' AS HIERARCHYID) 
Run Code Online (Sandbox Code Playgroud)

DEMO

  • @smpr - 它返回`5.2.3790`(演示https://rextester.com/CAIKQ32951),错过其他两个是正确的.它们高于"10.0.1703"."14393"和"15063"都大于"1703",因此它们具有相同的主要和次要版本以及后来的补丁版本 (2认同)