古詩詞大全網 - 成語解釋 - 999abc

999abc

何必要如此呢,擴大位數豈不更好?

下面是妳需要的代碼主體,具體參數定義看註釋。

---定義當前的流水號,可以從數據庫中獲取,此處為測試值

DECLARE @CURR_LSH VARCHAR(7)

---新流水號

DECLARE @LSH VARCHAR(7)

---舊流水號第5位

DECLARE @FIRSTCHAR VARCHAR(1)

---舊流水號最後2位的數值

DECLARE @LASTCHAR2 INT

---舊流水號第5位的asc碼

DECLARE @FIRSTCHARASCII INT

---新的後3位流水號

DECLARE @LASTCHAR3NEW VARCHAR(3)

---測試的舊流水號

SET @CURR_LSH = 'B307Z98'

---定義當前年份最後1位和兩位的月份

DECLARE @YEAR VARCHAR(1)

DECLARE @MONTH VARCHAR(2)

SET @YEAR = SUBSTRING(CONVERT(VARCHAR,DATEPART(YEAR,GETDATE())),4,1)

SET @MONTH = RIGHT('0' + CONVERT(VARCHAR,DATEPART(MONTH,GETDATE())), 2)

SET @FIRSTCHAR = SUBSTRING(@CURR_LSH, 5,1)

SET @FIRSTCHARASCII = ASCII(@FIRSTCHAR)

---@FIRSTCHARASCII 48-57表示0-9,65-90表示A-Z

SET @LASTCHAR2 = CONVERT(INT,SUBSTRING(@CURR_LSH,6,2))

IF @LASTCHAR2 <99

BEGIN

SET @LASTCHAR3NEW = @FIRSTCHAR + RIGHT('00' + CONVERT(VARCHAR, @LASTCHAR2 + 1),2)

END

ELSE

BEGIN

IF @FIRSTCHARASCII < 57

SET @LASTCHAR3NEW = CONVERT(VARCHAR, CONVERT(INT,@FIRSTCHAR + '00') + CONVERT(INT, RIGHT('00' + CONVERT(VARCHAR, @LASTCHAR2 + 1),3)))

ELSE IF @FIRSTCHARASCII = 57

SET @LASTCHAR3NEW = 'A00'

ELSE

SET @LASTCHAR3NEW = CHAR(@FIRSTCHARASCII + 1) + '00'

END

---輸出妳需要的新流水號

SET @LSH = 'B' + @YEAR + @MONTH + @LASTCHAR3NEW

---打印出來

PRINT @LSH