SQL Server 2005で、英数字の整数部分を1つ増やすユーザー定義関数をコーディングしようとしています。たとえば、 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などで機能するように、ループ下に置く必要があります。何か案は?
編集:指定された値には、1文字より長いアルファプレフィックスが付いているか、まったくない場合があります。