这是我第一次执行按位查询,我遇到了一个我不明白的问题。我有一个带有二进制(128)ColumnA的Table1 我执行
select *
from Table1
where Table1.ColumnA ^ CAST(127 as binary(128)) <> 0
它应该生成所有前7位中任何一位设置为1的记录。 相反,我得到了这个错误
二进制和二进制数据类型在&#39; ^&#39;中是不兼容的。操作
编写此查询的正确方法是什么?
答案 0 :(得分:1)
两个操作数都不能是binary
。一,必须是int
,tinyint
或smallint
。有关详细信息,请参阅docs。
我会尝试使用^ 127
代替:
select *
from Table1
where Table1.ColumnA ^ 127 <> 0