我試圖在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等等。有任何想法嗎?
編輯:給定的值可能具有比一個字符更長的字母前綴,或者根本沒有。
我沒有給你任何解決辦法,但很好奇,並且它可以幫助那些回答您的問題,您希望A99增加到什麼程度。 (A100是顯而易見的答案,但是您可以處理額外的數字嗎?) – 2009-06-12 14:58:37
達到限制時額外的數字是正確的。在這種情況下,A100就是我的GUI界面所做的 - 我需要在UDF下進行這項工作,因爲我正在編寫一個將追加數據的觸發器。 – 2009-06-12 15:01:26
alpha部分是否總是一個字符或者函數是否必須處理更多(例如'AB001'=>'AB002')? – Joe 2009-06-12 15:12:56