declare @old varchar(10)
set @old='AA1Z99'select case when right(@old,1)<>'9' then left(@old,5)+cast(cast(right(@old,1) as int)+1 as varchar)
when right(@old,2)<>'99' then left(@old,4)+cast(cast(right(@old,2) as int)+1 as varchar)
when right(@old,3)<>'Z99' then left(@old,3)+char(ascii(substring(@old,4,1))+1)+'01'
when right(@old,4)<>'9Z99' then left(@old,2)+cast(cast(substring(@old,3,1) as int)+1 as varchar)+'A01'
when right(@old,5)<>'Z9Z99' then left(@old,1)+char(ascii(substring(@old,2,1))+1)+'0A01'
when @old<>'ZZ9Z99' then char(ascii(substring(@old,1,1))+1)+'A0A01'
else null                 --overflow
end as new