10进制整数转换为2~36任意进制数存储过程

/* 
 ========================================================
 Procedure: usp_ConvertIntTo
 Description: Convert a number to 1~36
 Creation Date: 2005-4-25
 Author:  Frank Xie
 ========================================================
 Revision History
 ========================================================
 Rev Date  Description
 ========================================================
 1 2005-4-25 Generated by Frank Xie
 ========================================================
 
DECLARE @DD VARCHAR(50)
EXEC usp_ConvertIntTo 55,36,@DD OUTPUT
PRINT @DD
*/

CREATE PROCEDURE usp_ConvertIntTo
(
 @aNumber INT = 0,  --需转换的10进制数
 @convertType INT = 10,  --需要转变为的进制
 @result VARCHAR(50) OUTPUT --返回的转变后的值
)
AS
BEGIN
 DECLARE @List VARCHAR(36)
 DECLARE @yushu INT
 DECLARE @shang INT

 IF @convertType > 36
 BEGIN
  RAISERROR ('@convertType must less then 36', 16, 1)
  return -1
 END
 ELSE
 BEGIN
  IF @convertType < 1
  BEGIN
   RAISERROR ('@convertType must lager then 1', 16, 1)
   return -1
  END
 END
  
 
 IF @result IS NULL
  SET @result = ''

 SET @List = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'

 SET @yushu = @aNumber % @convertType

 IF @yushu > 0
  SET @result = SubString(@List,@yushu,1) + @result
 ELSE
 BEGIN
  IF @result <> '0'
   SET @result = '0' + @result
 END

 SET @shang = @aNumber / @convertType

 IF @shang >= @convertType
 BEGIN
  DECLARE @RES INT
  EXEC @RES = usp_ConvertIntTo @shang,@convertType,@result OUTPUT

  IF @RES = -1
   RETURN -1
 END
 ELSE
  SET @result = SubString(@List,@shang,1) + @result

 return 0
END

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值