27,579
社区成员
发帖
与我相关
我的任务
分享
/*====================================================*/
-- Author: Ken Wong
-- Create date: 2010-01-07 23:01:08
-- Description: 将其他进制数转化为二进制数
-- select dbo.convertobinary('18',10)
/*====================================================*/
--@number 要转化的数值 @type原进制类型
create function dbo.convertobinary (@number varchar(30),@type int)
returns varchar(30)
as
begin
declare @return varchar(30),@i int
select @return='',@i=1
if @type=2
begin
select @return=@number
end
else if @type=8
begin
while @i<=len(@number)
begin
select @return=@return+case substring(@number,@i,1) when '0' then '000'
when '1' then '001' when '2' then '010' when '3' then '011'
when '4' then '100' when '5' then '101' when '6' then '110'
when '7' then '111' end
select @i=@i+1
end
end
else if @type=10
begin
while cast(@number as int)>=1
begin
select @return=ltrim(cast(@number as int)%2)+@return
select @number=ltrim((cast(@number as int)-cast(@number as int)%2)/2)
end
end
else if @type=16
begin
while @i<=len(@number)
begin
select @return=@return+case substring(@number,@i,1) when '0' then '0000'
when '1' then '0001' when '2' then '0010' when '3' then '0011'
when '4' then '0100' when '5' then '0101' when '6' then '0110'
when '7' then '0111' when '8' then '1000' when '9' then '1001'
when 'A' then '' when 'B' then '1011' when 'C' then '1100'
when 'D' then '1101' when 'E' then '1110' when 'F' then '1111' end
select @i=@i+1
end
end
return @return
end