SQL好象不能这样进行位操作吧。

解决方案 »

  1.   

    sql里可以进行位操作,在我上面的代码中,
    if @mask & 0x1000000000000000 就可以成功
      

  2.   

    你这样怎么能判断是不是包含呢!!注释
    通过从两个表达式取对应的位,位运算符 & 在两个表达式之间执行按位逻辑与运算。只有当输入表达式中两个位(正在被解析的当前位)的值都为 1 时,结果中的位才被设置为 1;否则,结果中的位被设置为 0。位运算符 & 只可以用在具有整型数据类型分类的表达式上。如果左右表达式的整型数据类型不同(例如,左边 expression 的数据类型是 smallint,右边 expression 的数据类型是 int),那么将较小的数据类型的参数转换为较大的数据类型。在该示例中,数据类型为 smallint 的 expression 被转换为 int 数据类型。
      

  3.   

    应该这样declare @mask bigint
    set @mask = 0x1000000000000000
    if @mask & 0x1000000000000000 > 0 --注:1152921504606846976 =  0x1000000000000000
    print '包含'
    else
    print '不包含'把一个数字转换为16进制的字符串要自己写函数
      

  4.   

    declare @mask bigint
    set @mask = 0x1000000000000000
    if @mask & cast(1152921504606846976 as bigint)> 0 --注:1152921504606846976 =  0x1000000000000000
    print '包含'
    else
    print '不包含'
      

  5.   

    declare @mask bigint
    set @mask = 0x1000000000000000
    if @mask & cast(1152921504606846976 as bigint)> 0 --注:1152921504606846976 =  0x1000000000000000
    print '包含'
    else
    print '不包含'