加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:48:18 所属栏目:MsSql教程 来源:网络整理
导读:当试图比较软件版本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,但是这似乎需要一些代码.
当试图比较软件版本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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读