SQL Server WHERE子句中的“&”运算符
收藏

Sorry for the very basic question. What does the & operator do in this SQL

WHERE (sc.Attributes & 1) = 0 

sc is an alias for a table which contains a column attributes.

I'm trying to understand some SQL in a report and that line is making it return 0 entries. If I comment it out it works. I have limited SQL knowledge and I'm not sure what the & 1 is doing.

最佳答案

&是按位逻辑和运算符-对2个整数值执行运算。

WHERE (sc.Attributes & 1) = 0 

上面的代码检查sc.Attributes是否为偶数。这与说未设置第一位相同。

但是,由于该列的名称为“ 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

    公众号
    关注公众号订阅更多技术干货!