rt

解决方案 »

  1.   

    只有 ~(位非)、^(位异或)、&(位与)、|(位或)。
      

  2.   

    create   function   f_BinToDec(@bin1   varchar(50),@bin2   varchar(50))   
      returns   varchar(50)   
      as   
      begin   
      declare   @i   int,@re   varchar(50)   
      set   @i=1   
      set   @re=''   
      if   len(@bin1)<len(@bin2)   
      set   @bin1=replicate('0',len(@bin2)-len(@bin1))+@bin1   
      else   
      set   @bin2=replicate('0',len(@bin1)-len(@bin2))+@bin2   
        
      while   @i<=len(@bin1)   
      begin   
      set   @re=@re+case   when   substring(@bin1,@i,1)=substring(@bin2,@i,1)   then   '0'   else   '1'   end     
      set   @i=@i+1   
      end   
      return   @re   
      end   
      go   
      select   dbo.f_BinToDec('000001010101010','100001000000000')   
      declare   @bin1   varbinary(20),@bin2   varbinary(20)   
      set   @bin1=cast('000001010101010'   as   varbinary)   
      set   @bin2=cast('100001000000000'   as   varbinary)   
      select   dbo.f_BinToDec(cast(@bin1   as   varchar),cast(@bin2   as   varchar))   
        
        
        
      drop   function   dbo.f_BinToDec   
    /*--------------------------------------------------
    100000010101010(1 行受影响)
    --------------------------------------------------
    100000010101010(1 行受影响)*/
      

  3.   


     ~(位非)
    ^(位异或)
    &(位与)
    |(位或)
      

  4.   

      declare   @n   int,   @i   int,   @s   varchar(100)  
      set   @n   =   123  
      set   @i   =   0  
      set   @s   =   ''  
      while   @n   >=   power(2,   @i)  
      begin  
          set   @s   =   case   when   @n   &   power(2,   @i)   >   0   then   '1'   else   '0'   end   +   @s  
          set   @i   =   @i   +   1  
      end  
      select   @s     --1111011   
      

  5.   

    SQL只有位操作,要么自己写函数