对不起,这个非常基本的问题.&
操作员在这个SQL中做了什么
WHERE (sc.Attributes & 1) = 0
sc
是包含列的表的别名attributes
.
我试图在报告中理解一些SQL,并且该行使其返回0个条目.如果我发表评论它是有效的.我的SQL知识有限,我不确定& 1
它在做什么.
&是按位逻辑和运算符 - 它对2个整数值执行操作.
WHERE (sc.Attributes & 1) = 0
上面的代码检查sc.Attributes是否为偶数.这与说第一位没有设置是一样的.
由于列的名称虽然:"属性",但"1"值可能只是一些具有一些外部含义的标志.
对于存储在数字中的每个标志,通常使用1个二进制数字作为属性.所以要测试你使用sc.Attributes&1的第一个位,测试第二个你使用sc.Attributes&2,测试第三个你使用sc.Attributes&4,测试第四个你使用sc.Attributes&8,...
= 0部分正在测试是否未设置第一位.
一些二进制示例:(==显示操作的结果)
//Check if the first bit is set, same as sc.Attributes&1 11111111 & 00000001 == 1 11111110 & 00000001 == 0 00000001 & 00000001 == 1 //Check if the third bit is set, same as sc.Attributes&4 11111111 & 00000100 == 1 11111011 & 00000100 == 0 00000100 & 00000100 == 1