SQL之字符串字段也可自增

 -- =============================================
-- 创建人   :郑紫至
-- 创建日期 : 2009-9-11
-- 参数描述 : @TableName 自增字串所在的表名称,@AutoIdStart
--            自增自段ID前几位字符,@AutoIdName自增字段的名称
-- 功能说明 :创建指定表内字串ID自增主键的值
-- 测试方法 :exec [dbo].[sp_CreateAutoIdString]('CapacitorPrice','C-','PriceNo')
--            显示结果为“C-000001” 、“C-000002”   等等格式    
-- =============================================
CREATE PROCEDURE  [dbo].[sp_CreateAutoIdString]
(
@TableName VARCHAR(200),
@AutoIdStart VARCHAR(3),
@AutoIdName VARCHAR(50)
)

AS
 
BEGIN
 
 DECLARE  @AutoId VARCHAR(50)
         SET @AutoId=''
         DECLARE  @RecordCount INT
         DECLARE @countSql nvarchar(4000) 
      SET @countSql='SELECT @RecordCount=Count(*) From '+@TableName
      execute sp_executesql @countSql,N'@RecordCount int out',@RecordCount out
       
      IF @RecordCount=0
         BEGIN
                       SET @AutoId= @AutoIdStart+'000001'
         END

      ELSE

         BEGIN
        DECLARE @MaxInt INT
        SET @AutoId =  @AutoIdStart
        DECLARE @MaxIntSql nvarchar(4000) 
        SET @MaxIntSql='SELECT @MaxInt=MAX(CAST(SUBSTRING('+@AutoIdName+',4,6) AS INT))+1 FROM  '+@TableName
        execute sp_executesql @MaxIntSql,N'@MaxInt int out',@MaxInt out
       SET @MaxInt= @MaxInt
                          
         
        IF LEN(@MaxInt)=1
         BEGIN
                        SET @AutoId =@AutoIdStart + '00000'+CAST(@MaxInt  AS VARCHAR(1))
         END
       
       IF LEN(@MaxInt)=2
         BEGIN
                         SET @AutoIdStart =@AutoIdStart + '0000'+CAST(@MaxInt  AS VARCHAR(2))
         END
        
       IF LEN(@MaxInt)=3
         BEGIN
                        SET @AutoId =@AutoIdStart +'000'+ CAST(@MaxInt  AS VARCHAR(3))
         END
         
          IF LEN(@MaxInt)=4
         BEGIN
                        SET @AutoId =@AutoIdStart+'00' + CAST(@MaxInt  AS VARCHAR(4))
         END
        IF LEN(@MaxInt)=5
         BEGIN
                        SET @AutoId =@AutoIdStart+'0' + CAST(@MaxInt  AS VARCHAR(5))
         END
        IF LEN(@MaxInt)=5
         BEGIN
                        SET @AutoId =@AutoIdStart + CAST(@MaxInt  AS VARCHAR(6))
         END

        END

       SELECT @AutoId
END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值