分割版本号,比较版本号大小

对于版本号如:

     1.2.3

     1.10.2

这种类型的版本比较大小,直接字符串比较会有问题,

如果的字符串的大小长度一样则可以直接比较,所以采用补串的方式,基于组合字符串长度,

即 001002003    001010003,这样两个版本可直接进行比较。

组合字符串可以有两种方式:

一、数据库直接存储方式

将001002003与1.2.3形式的版本号都存入数据中,前者用来比较大小,后者用来显示。

将输入的1.2.3转换为001002003

string version = "1.2.3";

        string[] arr = version.Split('.');

        string sVersion = "";
        string sCurrent = "";
        foreach (string s in arr)
        {
            sCurrent = s;
            while (sCurrent.Length < 3)
            {
                sCurrent = "0" + sCurrent;
            }

            sVersion += sCurrent;
        }

最终sVerision=001002003

二、使用数据库函数转换

将版本同样进行分割并重新组合成想要的字符串 。         

CREATE function [dbo].[fn_split_version]
 (
    @version varchar(50)--版本号
 )
 returns int
 as
 begin
   declare @return int
   declare @v_1 varchar(10)
   declare @v_2 varchar(10)
   declare @v_3 varchar(10)
   declare @t_v_1 varchar(10)
 
  
   set @v_1=substring(@version,0,charindex('.',@version))
   set @t_v_1=substring(@version,charindex('.',@version)+1,len(@version))
   set @v_2= substring(@t_v_1,0,charindex('.',@t_v_1))
   set @v_3=substring(@t_v_1,charindex('.',@t_v_1)+1,len(@t_v_1))
  
   while len(@v_1)<3
   begin
   set @v_1='0'+@v_1
   end
   while len(@v_2)<3
   begin
   set @v_2='0'+@v_2
   end
   while len(@v_3)<3
   begin
   set @v_3='0'+@v_3
   end
   set @return=convert(int,@v_1+@v_2+@v_3)
   return @return
 end

@return 返回的是整形数据,函数里面进行的转换,也可以不进行转换。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值