2009年6月10日 星期三

Stored Procedure中為流水編號補0

在系統開發中有時需要產生一些流水編號,例如格式為yyyymmnnnn(2009060001),通常在產生新的流水編號前,我們會利用SELECT語法得出某個期間內的最後一個流水編號,以上面的格式來說,如果沒有200906開頭的流水編號,表示流水編號由1開始,相反地如果有則把流水編號加1,在這裡我只針對流水號補0來說明,底下有二段程式片段,第一段是一般寫法,第二段則是比較精簡的寫法
一般寫法
IF (LEN(@num) = 1)
BEGIN
   SET @num = '000' + @num
END
ELSE IF (LEN(@num) = 2)
BEGIN
   SET @num = '00' + @num
END
ELSE IF (LEN(@num) = 3)
BEGIN
   SET @num = '0' + @num
END

精簡寫法
SET @num = RIGHT(('0000' + @num), 4)

上面的寫法只是提供另一個思維,真正在撰寫時可能要考慮更多東西(例如資料型態的轉型)

沒有留言:

張貼留言