当前位置:  开发笔记 > 数据库 > 正文

SQL Server WHERE子句中的&符号(&)运算符

如何解决《SQLServerWHERE子句中的&符号(&)运算符》经验,为你挑选了1个好方法。

对不起,这个非常基本的问题.&操作员在这个SQL中做了什么

WHERE (sc.Attributes & 1) = 0 

sc是包含列的表的别名attributes.

我试图在报告中理解一些SQL,并且该行使其返回0个条目.如果我发表评论它是有效的.我的SQL知识有限,我不确定& 1它在做什么.



1> Brian R. Bon..:

&是按位逻辑和运算符 - 它对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

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有