Ampersand (amp;) operator in a SQL Server WHERE Clause(SQL Server WHERE 子句中的与号 () 运算符)
问题描述
抱歉问了一个非常基本的问题.&
操作符在这个 SQL 中有什么作用
Sorry for the very basic question. What does the &
operator do in this SQL
WHERE (sc.Attributes & 1) = 0
sc
是包含 attributes
列的表的别名.
sc
is an alias for a table which contains a column attributes
.
我试图理解报告中的一些 SQL,该行使其返回 0 个条目.如果我将其注释掉,它会起作用.我的 SQL 知识有限,我不确定 &1
正在做.
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 个整数值执行运算.
& is the bitwise logical and operator - It performs the operation on 2 integer values.
WHERE (sc.Attributes & 1) = 0
以上代码检查 sc.Attributes 是否为偶数.这与说第一位未设置相同.
The above code checks to see if sc.Attributes is an even number. Which is the same as saying that the first bit is not set.
由于列的名称:属性",那么1"值可能只是一些具有某种外部含义的标志.
Because of the name of the column though: "Attributes", then the "1" value is probably just some flag that has some external meaning.
对于存储在属性数字中的每个标志,通常使用 1 个二进制数字.因此,要测试第一位,您使用 sc.Attributes&1,测试第二位您使用 sc.Attributes&2,测试第三位您使用 sc.Attributes&4,测试第四位您使用 sc.Attributes&8, ...
It is common to use 1 binary digit for each flag stored in a number for attributes. So to test for the first bit you use sc.Attributes&1, to test for the second you use sc.Attributes&2, to test for the third you use sc.Attributes&4, to test for the fourth you use sc.Attributes&8, ...
= 0 部分正在测试以查看第一位是否未设置.
The = 0 part is testing to see if the first bit is NOT set.
一些二进制示例:(== 显示运算结果)
Some binary examples: (== to show the result of the operation)
//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
这篇关于SQL Server WHERE 子句中的与号 (&) 运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:SQL Server WHERE 子句中的与号 (&) 运算符
基础教程推荐
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01