將數字流水號格式化為固定長度,前置補零 (如 1 → 00001、333 → 00333),長度參數化。
DECLARE @SN INT = 333;
DECLARE @SNLen INT = 5;
SELECT RIGHT(REPLICATE('0', @SNLen) + CAST(@SN AS VARCHAR(10)), @SNLen) AS formatted_sn;
-- 結果: 00333
REPLICATE('0', @SNLen):產生足夠長度的零字串 (比寫死 '0000000000' 更彈性)。CAST(@SN AS VARCHAR(10)):數字轉字串。RIGHT(..., @SNLen):取右側固定長度,自動截斷多餘前導零。DECLARE @SNLen INT = 5;
DECLARE @SN INT;
SET @SN = 1;
SELECT RIGHT(REPLICATE('0', @SNLen) + CAST(@SN AS VARCHAR(10)), @SNLen); -- 00001
SET @SN = 333;
SELECT RIGHT(REPLICATE('0', @SNLen) + CAST(@SN AS VARCHAR(10)), @SNLen); -- 00333
SET @SN = 55555;
SELECT RIGHT(REPLICATE('0', @SNLen) + CAST(@SN AS VARCHAR(10)), @SNLen); -- 55555
DECLARE @DateTime DATETIME = GETDATE();
DECLARE @OfYear CHAR(4) = DATENAME(YEAR, @DateTime);
DECLARE @OfMonth CHAR(2) = RIGHT('0' + DATENAME(MONTH, @DateTime), 2);
DECLARE @SN INT = 1;
DECLARE @SNLen INT = 5;
SELECT @OfYear + @OfMonth + RIGHT(REPLICATE('0', @SNLen) + CAST(@SN AS VARCHAR(10)), @SNLen) AS full_sn;
-- 結果範例: 20240100001
SET @sn = 333, @len = 5;
SELECT LPAD(CAST(@sn AS CHAR), @len, '0'); -- 00333 (LPAD 專為補零設計)