简单的按位异或查询错误

时间:2014-07-07 21:34:17

标签: sql tsql bit-manipulation

这是我第一次执行按位查询,我遇到了一个我不明白的问题。我有一个带有二进制(128)ColumnA的Table1 我执行

select *
from Table1
where Table1.ColumnA ^ CAST(127 as binary(128)) <> 0

它应该生成所有前7位中任何一位设置为1的记录。 相反,我得到了这个错误

  

二进制和二进制数据类型在&#39; ^&#39;中是不兼容的。操作

编写此查询的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

两个操作数都不能是binary。一,必须是inttinyintsmallint。有关详细信息,请参阅docs

我会尝试使用^ 127代替:

select *
from Table1
where Table1.ColumnA ^ 127 <> 0