После некоторых попробовать, наконец я получил алгоритм & создания это для SQL Скалярнозначная функция по этому вопросу, как показано ниже
CREATE FUNCTION GetNextSeries (@lastSeriesNo VARCHAR(8))
RETURNS VARCHAR(8)
AS
BEGIN
DECLARE @nextSeriesNo VARCHAR(8)
DECLARE @CHAR1 CHAR=SUBSTRING(@lastSeriesNo,1,1)
DECLARE @CHAR2 CHAR=SUBSTRING(@lastSeriesNo,2,1)
DECLARE @CHAR3 CHAR=SUBSTRING(@lastSeriesNo,3,1)
DECLARE @CHAR4 CHAR=SUBSTRING(@lastSeriesNo,4,1)
DECLARE @n INT=SUBSTRING(@lastSeriesNo,5,3)
SET @n = @n + 1
IF(@n>999)
BEGIN
SET @n=1
IF(@CHAR4<>'Z')
BEGIN
SET @CHAR4=CHAR(UNICODE(@CHAR4)+1)
END
ELSE IF(@CHAR3<>'Z')
BEGIN
SET @CHAR4='A'
SET @CHAR3=CHAR(UNICODE(@CHAR3)+1)
END
ELSE IF(@CHAR2<>'Z')
BEGIN
SET @CHAR4='A'
SET @CHAR3='A'
SET @CHAR2=CHAR(UNICODE(@CHAR2)+1)
END
ELSE IF(@CHAR1<>'Z')
BEGIN
SET @CHAR4='A'
SET @CHAR3='A'
SET @CHAR2='A'
SET @CHAR1=CHAR(UNICODE(@CHAR1)+1)
END
END
SET @[email protected][email protected][email protected][email protected]+(CASE LEN(@n) WHEN 1 THEN '00' WHEN 2 THEN '0' ELSE '' END)+convert(VARCHAR(3),@n)
RETURN @nextSeriesNo
END
Интересно. Удачи! Дайте нам знать, как вы справляетесь ... – HoneyBadger
Добавьте теги, которые вы используете. – jarlh
смотрит на меня, что ваш номер на самом деле является двумя значениями - один является базовым номером 26 (с использованием только буквенных символов) с длиной 4, второй - десятичным числом длины три. Вам нужно подумать о том, как вы увеличиваете каждый из этих элементов - покажите нам, что вам удалось сделать до сих пор, и мы сможем помочь –