-- 四位序列号
declare @temp varchar(1)--声明一个临时变量存储个位数
declare @first varchar(1)--声明一个临时变量存储十位数
declare @send varchar(1)--声明一个临时变量存储百位数
declare @third varchar(1)--声明一个临时变量存储千位数
declare @tempChar varchar(4)--声明一个临时变量存储流水号
declare @OrderID varchar(4)--四位流水号
set @OrderID='00ZZ'--设置初始值(当然后期做进去的话,要读取判断)
if(isnumeric(right(@OrderID,1))=1)
begin
if(cast(right(@OrderID,1) as int)<9)--判断最后一位值小于9的情况
begin
set
@temp= cast((cast(right(@OrderID,1) as int)+1) as nvarchar)
end
if(cast(right(@OrderID,1) as int)=9)--判断最后一位值等于9的情况
begin
set @temp='A'
end
--打印流水号
set
@tempChar = cast(left(@OrderID,3) as varchar) + @temp
print
@tempChar
end
else
begin
if(right(@OrderID,1)='A')--判断最后一位值等于A的情况
begin
set @temp = 'B'
end
if(right(@OrderID,1) = 'B')--判断最后一位值等于B的情况
begin
set @temp = 'C'
end
if(right(@OrderID,1) = 'C')--判断最后一位值等于C的情况
begin
set @temp = 'D'
end
--------------跳过I,O两个字母---------------
if(right(@OrderID,1) = 'H')--判断最后一位值等于H的情况
begin
set @temp = 'J'
end
if(right(@OrderID,1) = 'N')--判断最后一位值等于N的情况
begin
set @temp = 'P'
end
--省略D_Y----------------------
if(right(@OrderID,1) = 'Z')----------------------------------判断第四位到Z的情况开始
begin
set @temp = '0' --设置第四位为'0'
if(isnumeric(left(right(@OrderID,2),1))=1)-------------判断第三位的值为数字
begin
if(cast(left(right(@OrderID,2),1) as int)<9)--判断第三位值小于9的情况
begin
set
@first= cast((cast(left(right(@OrderID,2),1) as int)+1) as nvarchar)
end
if(cast(left(right(@OrderID,2),1) as int)=9)--判断第三位值等于9的情况
begin
set @first='A'
end
--打印流水号
set
@tempChar = cast(left(@OrderID,2) as varchar) + @first+ '0'
print
@tempChar
return
end
else
begin
if(right(@OrderID,1)='A')--判断第三位值等于A的情况
begin
set @first = 'B'
end
--省略其他的字符
--------------跳过I,O两个字母---------------
----------判断第三位的字符位Z开始
if(left(right(@OrderID,2),1) = 'Z')----------------------------------判断第三位到Z的情况开始
begin
set @first = '0' --设置第三位为'0'
if(isnumeric(right(left(@OrderID,2),1))=1)-------------判断第二位的值为数字
begin
if(cast(right(left(@OrderID,2),1) as int)<9)--判断第二位值小于9的情况
begin
set
@send = cast((cast(right(left(@OrderID,2),1) as int)+1) as nvarchar)
end
if(cast(right(left(@OrderID,2),1) as int)=9)--判断第二位值等于9的情况
begin
set @send = 'A'
end
--打印流水号
set
@tempChar = cast(left(@OrderID,1) as varchar) +@send+ @first+ @temp
print
@tempChar
return
end
else
begin
if(right(left(@OrderID,2),1)='A')--判断第二位值等于A的情况
begin
set @first = 'B'
end
--省略其他的字符
--------------跳过I,O两个字母---------------
-----------------------判断第二位字符Z开始
--
if(right(left(@OrderID,2),1) = 'Z')
--
begin
--
set @send = '0' --设置第二位为'0'
--
if(isnumeric(left(@OrderID,1)=1)-------------判断第一位的值为数字
--
begin
--
if(cast(left(@OrderID,1) as int)<9)--判断第一位值小于9的情况
--
begin
--
set
@third = cast(cast(left(@OrderID,1) as int)+1) as nvarchar)
--
end
--
if(cast(left(@OrderID,1) as int)=9)--判断第一位值等于9的情况
--
begin
--
set @third = 'A'
--
end
--
--打印流水号
--
set
@tempChar =@third +@send+ @first+ @temp
--
print
@tempChar
--
return
--
end
--
else
--
begin
--
if(left(@OrderID,1)='A')--判断第一位值等于A的情况
--
begin
--
set @third = 'B'
--
end
--
--打印流水号
--
set
@tempChar = @third + @send+ @first+ @temp
--
print
@tempChar
--
return
--
end
--
end
--
-----------------------判断第二位字符Z结束
--打印流水号
set
@tempChar = cast(left(@OrderID,2) as varchar) + @first+ @temp
print
@tempChar
return
end
end
----------------------------------判断第三位字符结束
--打印流水号
set
@tempChar = cast(left(@OrderID,2) as varchar) + @first+ @temp
print
@tempChar
return
end
end
--打印流水号
set
@tempChar = cast(left(@OrderID,3) as varchar) + @temp
print
@tempChar
end
------------------------我不知道简便的方法,写了这么繁琐的代码,希望高手能帮我看看,怎么样写一个简单的也能实现的方法