首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

SQL Server 字串前置補零:RIGHT + CAST 簡易實現流水號格式化

     編輯:MySQL 綜合教學

需求

將數字流水號格式化為固定長度,前置補零 (如 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

MySQL 對應寫法

SET @sn = 333, @len = 5;
SELECT LPAD(CAST(@sn AS CHAR), @len, '0');  -- 00333 (LPAD 專為補零設計)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved