有一张表:TableA
Name  number
小明  16
小孙  17
小陈  10
小王  11
小刘  12
小吴  64
小张  129
number是int类型,我要取出化成二进制后低第二位为1的数据,如
小明的number是16,二进制是10000,不符合要求
小陈的number是10,二进制是1010,右边第二位是1,符合要求

解决方案 »

  1.   

    select * from TableA where number&2=2
      

  2.   

    ++大版正解!!!转成二进制再处理也可以,但是太麻烦了,例如:go
    create function prc_numTo2 
    (@num bigint)
    returns varchar(200)
    as
    begin
    declare @numstr varchar(50)
    set @numstr=''
    while (@num<>0)
    begin
       set @numstr=@numstr+convert(char(1),@num%2)
       set @num=@num/2
    end
    return reverse(@numstr)
    endgo
    declare @Table table (Name varchar(4),number int)
    insert into @Table
    select '小明',16 union all
    select '小孙',17 union all
    select '小陈',10 union all
    select '小王',11 union all
    select '小刘',12 union all
    select '小吴',64 union all
    select '小张',129select * from @Table 
    where left(right(dbo.prc_numTo2(number),2),1)=1
    /*
    Name number
    ---- -----------
    小陈   10
    小王   11
    */
      

  3.   

    http://9host.cn/shujuku/200742218540514375.html
    INT型转二进制字符串
    select name,number from TableA where left(right('二进制字符串',2),1) = '1'