下面是妳需要的代碼主體,具體參數定義看註釋。
---定義當前的流水號,可以從數據庫中獲取,此處為測試值
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