27,579
社区成员
发帖
与我相关
我的任务
分享
create function func_To36Hex(@decimalNum int)
returns varchar(5)
as
begin
declare @reminder int
declare @hexStr varchar(50)=''
declare @system int=36
while @decimalNum>=@system
begin
set @reminder=@decimalNum%@system
set @decimalNum=@decimalNum/@system
if(@reminder<=9)
begin
set @hexStr=@reminder+@hexStr
end
else
begin
set @hexStr=CHAR(ASCII('A')+(@reminder-10))+@hexStr
end
end
set @reminder=@decimalNum%@system
if(@reminder<=9)
begin
set @hexStr=@reminder+@hexStr
end
else
begin
set @hexStr=CHAR(ASCII('A')+(@reminder-10))+@hexStr
end
return right('00000'+Convert(varchar(5),@hexStr),5)
end
DECLARE @iRow INT=0
CREATE TABLE t1
(
id INT IDENTITY(1,1) NOT NULL,
v VARCHAR(100)
)
DECLARE @iRow INT=0
WHILE @iRow<500
BEGIN
INSERT INTO t1 ( v ) VALUES ( CAST(@iRow AS VARCHAR(100)) )
set @iRow=@iRow+1
END
DECLARE @feed varchar(100)='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SELECT SUBSTRING(@feed,case when t1.ID%LEN(@feed)=0 THEN LEN(@feed) ELSE t1.ID%LEN(@feed) END,1), * FROM t1
DECLARE @feed varchar(100)='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SELECT SUBSTRING(@feed,x.ID%LEN(@feed),1), * FROM x
create FUNCTION To36Hex(@value int)
RETURNS varchar(50)
AS
BEGIN
DECLARE @seq char(36)
DECLARE @result varchar(50)
DECLARE @digit char(1)
SET @seq = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SET @result = SUBSTRING(@seq, (@value%36)+1, 1)
WHILE @value > 0
BEGIN
SET @digit = SUBSTRING(@seq, ((@value/36)%36)+1, 1)
SET @value = @value/36
IF @value <> 0 SET @result = @digit + @result
END
RETURN @result
END
GO