Увеличение буквенно-цифрового значения в пользовательской функции

Я пытаюсь закодировать пользовательскую функцию под 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 и так далее. Есть идеи?

Редактировать: данное значение может иметь альфа-префикс длиннее одного символа или не иметь его вообще.

Ответы на вопрос(3)

Ваш ответ на вопрос