对于版本号如:
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