首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL 流水編號自動產生函數實作

     編輯:MySQL 資料庫相關知識

許多業務系統需要自動產生格式固定的流水編號(如:BH000001、BH000002)。本文提供一個 SQL Server 純量函數範例,自動產生 8 碼編號(前綴 BH + 6 位數字流水號)。

函數建立語法

CREATE FUNCTION f_NextBH()
RETURNS CHAR(8)
AS
BEGIN
    RETURN (
        SELECT 'BH' + RIGHT(1000001 + ISNULL(RIGHT(MAX(BH), 6), 0), 6)
        FROM YourTable  -- 替換為實際存放編號的資料表
    )
END
GO

運作原理解析

  • MAX(BH):取得現有最大編號
  • RIGHT(MAX(BH), 6):擷取後 6 碼數字部分
  • ISNULL(..., 0):若表為空則從 0 開始
  • 1000001 + ...:加 1 並補足前導零(利用 1000001 確保 6 位數)
  • RIGHT(..., 6):取最後 6 碼作為新流水號
  • 'BH' + ...:加上前綴組成完整編號

使用範例

-- 呼叫函數取得下一個編號
SELECT dbo.f_NextBH() AS NextCode

-- 寫入新資料時直接使用
INSERT INTO YourTable (BH, OtherColumns)
VALUES (dbo.f_NextBH(), '其他資料')

注意事項

⚠️ 此函數在高併發環境下可能產生重複編號,生產環境建議搭配交易鎖定或使用 SEQUENCE 物件(SQL Server 2012+)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved