最近做项目遇到自动产生顺序字符的功能。
如: AAAA 、
下一个为AAAB
特写了一个SQL 自动产生的方法。
--根据传入参数产生下一个大小字符
CREATE Function [dbo].[GetNextCode](
@Code char(1)
)
returns varchar(10)
as
begin
Declare @allChar nvarchar(30),@index int;
set @allChar='ABCDEFGHIJKLMNOPQRSTUVWXYZA';
set @index=charindex(@Code,@allChar)
RETURN SUBSTRING(@allChar,@index+1,1)
end
--根据传入数量产生一定数据的'AA'
CREATE FUNCTION [dbo].[GetCountA](
@count int)
returns varchar(10)
as
begin
declare @result varchar(10);
set @result='';
while(@count>0)
begin
set @result=@result+'A'
SET @count=@count-1;
end
RETURN @result;
END
--这个就是我们需要的传入一个10个以内的字符产生下个字符
CREATE FUNCTION [dbo].[GetSysCode](
@MaxCode varchar(10)
)
returns varchar(10)
as
begin
declare @temp char(1),@length int,@index int,@returnChar varchar(10);
set @length=len(@MaxCode);
set @index=@length;
while(@index>0)
begin
set @temp=SUBSTRING(@MaxCode,@index,1);
if(@temp<'Z')
BEGIN
SET @temp=[dbo].[GetNextCode](@temp);
set @returnChar=SUBSTRING(@MaxCode,1,@index-1)+@temp+dbo.GetCountA(@length-@index);
RETURN @returnChar;
END
ELSE
BEGIN
SET @index=@index-1;
END
end
return @returnChar;
END