我正在尝试在 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 等等。有任何想法吗?
编辑:给定值的字母前缀可能长于一个字符,或者根本没有。