SQL Server中生成指定长度的流水号

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

SQL Server中生成指定长度的流水号


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论