通过SQL Server获取版本COLUMN的MAX

时间:2019-06-10 06:57:11

标签: sql sql-server

我有包含版本的sql字符串列,

例如:'2.0','1.0.1.0','12 .5','2.6'

如何通过sql查询从此列中获取最大值?

3 个答案:

答案 0 :(得分:1)

如果其MS SQL服务器可以运行:

Declare @t table (id varchar(50))

insert into @t values (2.0),(12.5),(2.6),(100.14)

select max(convert(float,id)) from @t

答案 1 :(得分:1)

您尝试过吗?

SELECT * FROM table ORDER BY version_column DESC limit 1;

答案 2 :(得分:1)

在大多数情况下,转换为纯数字不是正确的解决方案。例如,如果您有版本

12.0.0 和 1.21.0

结果为1200和1210,这很糟糕,因为1.21.0低于12.0.0

更好的主意是使用某种拆分方式将您的版本拆分为4个单独的数字(每个SQL引擎都有自己的谷歌搜索引擎),然后分别对每个版本进行排序。这是PostgreSQL中的示例

    SELECT
      SPLIT_PART(version, '.', 1) as major,
      SPLIT_PART(version, '.', 2) as minor,
      SPLIT_PART(version, '.', 3) as hotfix,
    version
    FROM temp
    ORDER BY major DESC,minor DESC,hotfix DESC
    LIMIT 1

这样,您将不必费心将其转换为一个数字并遇到转换错误。