Я пытаюсь закодировать пользовательскую функцию в SQL Server 2005, которая увеличит целую часть буквенно-цифрового значения на единицу. Например, uf_AlphanumericIncrease ('A000299')
должен вернуть 'A000300'. Вот что я сделал до сих пор;
ALTER FUNCTION uf_AlphaNumericIncrement
(
@ID varchar(10)
)
RETURNS VARCHAR(10) AS
BEGIN
DECLARE @RES varchar(10);
IF SUBSTRING(@ID,LEN(@ID),1)='9'
SET @RES=SUBSTRING(@ID,1,LEN(@ID)-2)+CAST (CAST(SUBSTRING(@ID,LEN(@ID)-1,1) AS smallint)+1 AS VARCHAR(10))+'0';
ELSE
SET @RES=SUBSTRING(@ID,1,LEN(@ID)-1)+CAST (CAST(SUBSTRING(@ID,LEN(@ID),1) AS smallint)+1 AS VARCHAR(10));
RETURN @RES;
END
Но, как вы можете видеть, это работает только для последней цифры. Мне нужно получить его в цикле, чтобы он мог работать для A002999 и так далее. Есть идеи?
Редактировать: данное значение может иметь альфа-префикс длиннее одного символа или не иметь его вообще.