SQL自定义函数实现十进制转二进制
想实现在SQL2000中,写自定义函数实现十进制转二进制,并且能转换负数十进制的????
------解决方案--------------------function zhuan(m)  
for i=0 to 12  
p=m mod 2  
if p=1 then  
have=have&i&","  
end if  
m=int(m/2)  
if m=0 then  
zhuan=have  
exit function  
end if  
next  
end function
------解决方案--------------------补充:下面的是查到的数据库自定义函数十进制转二进制,但负数的情况是不好使的,尝试过修改,可没成功
CREATE FUNCTION Dec2Bin(@Dec INT, @StrLen TINYINT)
RETURNS VARCHAR(31) -- INT型,4字节,正数转为二进制字符串最多31位
AS
BEGIN
   DECLARE @BinStr AS VARCHAR(31)      -- 二进制表示的字符串
   DECLARE @Div2 AS INT                -- 商
   DECLARE @Mod2 AS INT                -- 模/余数
   IF @Dec < 0
       RETURN 'NULL'              -- 不支持负数的转换
   SET @Div2 = @Dec / 2 
   SET @Mod2 = @Dec % 2 
   SET @BinStr = ''
   WHILE @Div2 <> 0
   BEGIN
       SET @BinStr = CAST(@Mod2 AS CHAR(1)) + @BinStr
       SET @Dec = @Dec / 2
       SET @Div2 = @Dec / 2
       SET @Mod2 = @Dec % 2
   END  
   SET @BinStr = CAST(@Mod2 AS CHAR(1)) + @BinStr -- 至此,已完成十进制到二进制的转换
   IF @StrLen > LEN(@BinStr)    -- 如果用户指定的长度大于实际长度,则需要左边补0
       BEGIN
           IF @StrLen > 31    -- 返回的长度,最长为32
               SET @StrLen = 31  
           DECLARE @ZeroStr VARCHAR(31)    -- 需要补充的"0000..."
           DECLARE @OffsetLen TINYINT       -- 需要补充几个"0"
           SET @ZeroStr = ''
           SET @OffsetLen = @StrLen - LEN(@BinStr)  
           WHILE  @OffsetLen > 0
           BEGIN
               SET @ZeroStr = @ZeroStr + '0'  
               SET @OffsetLen = @OffsetLen - 1
           END  
           SET @BinStr = @ZeroStr + @BinStr
       END
   RETURN @BinStr
END
------解决方案--------------------SQL code
--整数转换成二进制的函数 
 create function f_int2bin(@i int) 
 returns varchar(1000) 
 as 
 begin 
 	declare @s varchar(1000) 
 	set @s='' 
 	while @i>0 
 		select @s=cast(@i%2 as varchar)+@s 
 			,@i=@i/2 
 	return(@s) 
 end 
 go 
  
 --调用  
 select dbo.f_int2bin(200) 
 
------解决方案--------------------各进制之间的转换函数
http://www.windbi.com/showtopic-65.aspx
通用转换进制函数
http://www.windbi.com/showtopic-307.aspx
-----------------------------------------------------
SQLServer的一切,尽在www.windbi.com