如何使用SQL Server比较软件版本?

前端之家收集整理的这篇文章主要介绍了如何使用SQL Server比较软件版本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当试图比较软件版本5.12到5.8时,版本5.12是较新的,但是数学上5.12小于5.8.如何比较两个版本,以便较新版本返回“Y”?
SELECT CASE WHEN 5.12 > 5.8 THEN 'Y' ELSE 'N' END

可能的解决方

>在5.8中添加小数点后的0,以便比较5.08到5.12,但是这似乎需要一些代码.
>简单地比较十进制后的值(即12> 8),但是当版本滚动到6.0时失败.
>使用反向逻辑,假设如果5.12小于5.8返回“Y”.我相信当版本升级到6.0时,会失败.

解决方法

declare @v1 varchar(100) = '5.12'
declare @v2 varchar(100) = '5.8'

select 
    case 
    when CONVERT(int,LEFT(@v1,CHARINDEX('.',@v1)-1)) < CONVERT(int,LEFT(@v2,@v2)-1)) then 'v2 is newer'
    when CONVERT(int,@v1)-1)) > CONVERT(int,@v2)-1)) then 'v1 is newer'
    when CONVERT(int,substring(@v1,@v1)+1,LEN(@v1))) < CONVERT(int,substring(@v2,@v2)+1,LEN(@v1))) then 'v2 is newer'
    when CONVERT(int,LEN(@v1))) > CONVERT(int,LEN(@v1))) then 'v1 is newer'
    else 'same!'

    end

猜你在找的MsSQL相关文章