zoukankan      html  css  js  c++  java
  • SQL Server中生成指定长度的流水号

          很多时候我们都会用到指定长度的流水号,假如生成订单编码规则我们设置为:仓库编码+年月日(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多。

  • 相关阅读:
    管理配置KVM,热添加、热迁移
    《google工作整理术》21条原则
    【教你玩转云计算】在阿里云一键安装快速部署Oracle11g 【转】
    Oracle数据库开启归档日志及rman备份情况查询
    【转】CentOS7一键部署OpenStack
    【转】基于openstack安装部署私有云详细图文教程
    Oracle Database 12c数据库中文配置安装图解教程(详细安装步骤)
    精通Linux(第2版) 第3章 设备管理
    精通Linux(第2版) 第2章 基础命令和目录结构
    四种IO 模型
  • 原文地址:https://www.cnblogs.com/wych/p/1540302.html
Copyright © 2011-2022 走看看