日期:2014-05-18  浏览次数:20474 次

问一个关于位运算的问题
如何才能在SQL SERVER里获取某个整型数值的某位是1还是0呢?
谢谢


------解决方案--------------------
SQL code
用函数

------------------------
Create FUNCTION DecToBin(@Dec Int)
RETURNS VARCHAR(16)
AS
begin
 declare @BinStr as varchar(20)
 declare @Mod2 as int 
 declare @Div2   as int 

 

 set @Div2 = @Dec / 2
 set @Mod2 = @Dec % 2
 set @BinStr=''

 

 while @Div2<>0
 begin
  if @Mod2=0 
   set @BinStr = @BinStr + '0'
  else 
   set @BinStr = @BinStr + '1'
 
  set @Dec = @Dec / 2
  set @Div2 = @Dec / 2
  set @Mod2 = @Dec % 2 
 end
 
 set @BinStr = @BinStr + '1'
 
 return REVERSE(@BinStr + right('0000000000000000',16-len(@BinStr)))
end

------解决方案--------------------
用位运算符,^(位异或)、&(位与)、|(位或)、~(位非)。

例如,想知道20(十进制)这个数字转换为二进制后的第三位是1还是0。 
select case when 20&8 <> 0 then 1 else 0 end