SQL SERVER存储过程生成字母+数字的编码

系统 1671 0

  公司内设备管理系统中设备建账功能,功能目的是对新进设备进行记录并入库。其中设备编号一项定义为自己修改(查看之前的设备号,取一个不重复的值来填写),感觉特别麻烦!用存储过程自动生成编码岂不是更效率。

   需求:根据设备组代码(PC)+递增数字,构成编码,编码中数字必须为三位数,无三位数的,以‘0’占位。

    代码如下:

        
           1
        
        
          --
        
        
          测试数据库准备
        
        
           2
        
        
          use
        
        
           master


        
        
           3
        
        
          go
        
        
           4
        
        
          if
        
        
          exists
        
        (
        
          select
        
        
          *
        
        
          from
        
         dbo.sysdatabases 
        
          where
        
         name
        
          =
        
        
          '
        
        
          hzf
        
        
          '
        
        
          )


        
        
           5
        
        
          drop
        
        
          database
        
        
           hzf


        
        
           6
        
        
          go
        
        
           7
        
        
          create
        
        
          database
        
        
           hzf


        
        
           8
        
        
          go
        
        
           9
        
        
          use
        
        
           hzf


        
        
          10
        
        
          go
        
        
          11
        
        
          --
        
        
          创建测试表
        
        
          12
        
        
          ALTER
        
        
          proc
        
        
          [
        
        
          dbo
        
        
          ]
        
        .
        
          [
        
        
          get_new_id
        
        
          ]
        
        
          13
        
        
          @new_id
        
        
          varchar
        
        (
        
          16
        
        ) output,    
        
          --
        
        
          生产的编号
        
        
          14
        
        
          @number
        
        
          int
        
        ,                
        
          --
        
        
          设置编码数字的最大位数
        
        
          15
        
        
          @group
        
        
          varchar
        
        (
        
          5
        
        )            
        
          --
        
        
          编号字母
        
        
          16
        
        
          as
        
        
          17
        
        
          begin
        
        
          18
        
        
          19
        
        
          set
        
        
          @new_id
        
        
          =
        
        
          null
        
        
          20
        
        
          21
        
        
          select
        
        
          top
        
        
          1
        
        
          @new_id
        
        
          =
        
         ID 
        
          from
        
         test_id 
        
          where
        
         id 
        
          like
        
        
          @group
        
        
          +
        
        
          '
        
        
          %
        
        
          '
        
        
          order
        
        
          by
        
        
          convert
        
        (
        
          int
        
        ,
        
          RIGHT
        
        (id,
        
          LEN
        
        (id)
        
          -
        
        
          len
        
        (
        
          @group
        
        )) ) 
        
          desc
        
        
          22
        
        
          23
        
        
          if
        
        
          @new_id
        
        
          is
        
        
          null
        
        
          24
        
        
          set
        
        
          @new_id
        
        
          =
        
        
          @group
        
        
          +
        
        
          REPLICATE
        
        (
        
          '
        
        
          0
        
        
          '
        
        ,
        
          2
        
        )
        
          +
        
        
          '
        
        
          1
        
        
          '
        
        
          25
        
        
          else
        
        
          26
        
        
          begin
        
        
          27
        
        
          declare
        
        
          @big
        
        
          varchar
        
        (
        
          16
        
        
          )


        
        
          28
        
        
          set
        
        
          @big
        
        
          =
        
        
          convert
        
        (
        
          int
        
        , 
        
          RIGHT
        
        (
        
          @new_id
        
        ,
        
          LEN
        
        (
        
          @new_id
        
        )
        
          -
        
        
          len
        
        (
        
          @group
        
        )) )
        
          +
        
        
          1
        
        
          29
        
        
          if
        
        
          @big
        
        
          <
        
        
          100
        
        
          30
        
        
          begin
        
        
          31
        
        
          set
        
        
          @big
        
        
          =
        
        
          REPLICATE
        
        (
        
          '
        
        
          0
        
        
          '
        
        ,
        
          3
        
        
          -
        
        
          LEN
        
        (
        
          @big
        
        )) 
        
          +
        
        
          @big
        
        
          32
        
        
          end
        
        
          33
        
        
          set
        
        
          @new_id
        
        
          =
        
        
          @group
        
        
          +
        
        
          @big
        
        
          34
        
        
          end
        
        
          35
        
        
          36
        
        
          37
        
        
          end
        
        
          38
        
        
          39
        
        
          GO
        
        
          40
        
        
          41
        
        
          --
        
        
          测试
        
        
          42
        
        
          declare
        
        
          @test
        
        
          int
        
        
          43
        
        
          set
        
        
          @test
        
        
          =
        
        
          1
        
        
          44
        
        
          while
        
        (
        
          @test
        
        
          <=
        
        
          20
        
        
          )


        
        
          45
        
        
          begin
        
        
          46
        
        
          declare
        
        
          @new_id
        
        
          varchar
        
        (
        
          14
        
        
          )


        
        
          47
        
        
          exec
        
         get_new_id 
        
          @new_id
        
         output,
        
          7
        
        ,
        
          '
        
        
          PC
        
        
          '
        
        
          48
        
        
          insert
        
        
          into
        
         test_id 
        
          values
        
        (
        
          @new_id
        
        
          )


        
        
          49
        
        
          set
        
        
          @test
        
        
          =
        
        
          @test
        
        
          +
        
        
          1
        
        
          50
        
        
          end
        
        
          51
        
        
          select
        
        
          *
        
        
          from
        
         test_id
      

 

 

SQL SERVER存储过程生成字母+数字的编码


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

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

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

【本文对您有帮助就好】

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

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