SQL Server中產生指定長度的流水號

來源:互聯網
上載者:User
      很多時候我們都會用到指定長度的流水號,假如產生訂單識別碼規則我們設定為:倉庫編碼+年月日(6位)+當天四位流水號,如倉庫編碼為01日期為2009-08-06的第一個訂單識別碼應該為:01200908060001,在這裡指定長度的流水號的產生一般都是在資料庫裡操作,方法可以用下面幾種:

方式一:笨辦法,不夠指定長度的話,前面迴圈加零

CREATE FUNCTION fn_GenerateSerialNumber
(
    @numberValue int, --流水號數值
    @length int --流水號字串指定長度
)
RETURNS varchar(20)
AS
BEGIN
    DECLARE @result varchar(20)
    SET @result = Cast(@numberValue as varchar)
 
    DECLARE @currentLen int
    SET @currentLen = Len(@result)
 
    WHILE(@currentLen < @length)
    BEGIN
       SET @result = '0' + @result
       SET @currentLen = @currentLen + 1
    END
 
    RETURN @result
END方式二:使用Replace +Str函數

CREATE FUNCTION fn_GenerateSerialNumber2
(
    @numberValue int, --流水號數值
    @length int --流水號字串指定長度
)
RETURNS varchar(20)
AS
BEGIN
    RETURN Replace(Str(@numberValue, @length), ' ', '0')
END方式三:使用Replicate函數

CREATE FUNCTION fn_GenerateSerialNumber3
(
    @numberValue int, --流水號數值
    @length int --流水號字串指定長度
)
RETURNS varchar(20)
AS
BEGIN
    DECLARE @result varchar(20)
    SET @result = Cast(@numberValue as varchar)
    SET @result = Replicate('0', @length - Len(@result)) + @result
 
    RETURN @result
END方式四:使用Right + Replicate函數

CREATE FUNCTION fn_GenerateSerialNumber4
(
    @numberValue int, --流水號數值
    @length int --流水號字串指定長度
)
RETURNS varchar(20)
AS
BEGIN
    DECLARE @result varchar(20)
    SET @result = Cast(@numberValue as varchar)
    SET @result = Right(Replicate('0', @length) + @result, @length)
 
    RETURN @result
END

 

另外,對於方式四,還可以考慮

SET @result = Reverse(Substring(Reverse(@result) + Replicate('0', @length), 1, @length))

等很多種辦法,字串函數組合有N多。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.