& (按位 AND) (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

在两个整数值之间执行“逻辑位与”运算。

Transact-SQL 语法约定

语法

expression & expression  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

expression
整数数据类型类别中的任何一种数据类型、bit、binary 或 varbinary 数据类型的任何有效的表达式 。 对于位运算,expression 被视为二进制数字。

注意

位运算中,只有一个 expression 可以是 binary 或 varbinary 的其中任意一种数据类型 。

结果类型

如果输入值为 int,则结果为 int 。

如果输入值为 smallint,则结果为 smallint 。

如果输入值为 tinyint 或 bit,则结果为 tinyint 。

备注

按位运算符在两个表达式之间执行按位逻辑 AND,为两个表达式采用每个对应位。 当且仅当输入表达式中两个位(正在被解析的当前位)的值都为 1 时,结果中的位才被设置为 1;否则,结果中的位被设置为 0。

如果左侧和右侧的表达式具有不同的整数数据类型(例如,左侧的表达式的数据类型为 smallint,右侧的表达式的数据类型为 int),则会将较小数据类型的参数转换为较大数据类型。 此示例中,smallintexpression 转换成了 int。

示例

以下示例将使用 int 数据类型创建一个表,用于存储值,并将两个值插入到一行中。

CREATE TABLE bitwise (   
  a_int_value INT NOT NULL,  
  b_int_value INT NOT NULL);  
GO  
INSERT bitwise VALUES (170, 75);  
GO  

下面的查询将在 a_int_valueb_int_value 列之间执行位与运算。

SELECT a_int_value & b_int_value  
FROM bitwise;  
GO  

下面是结果集:

-----------   
10            
  
(1 row(s) affected)  

170(a_int_valueA)的二进制表示形式是 0000 0000 1010 1010。 75(b_int_valueB)的二进制表示形式是 0000 0000 0100 1011。 对上述两个值执行“位与”运算将产生二进制结果 0000 0000 0000 1010,即十进制数 10。

(A & B)  
0000 0000 1010 1010  
0000 0000 0100 1011  
-------------------  
0000 0000 0000 1010  

另请参阅

表达式(Transact-SQL)
运算符 (Transact-SQL)
位运算符 (Transact-SQL)
&= (按位和赋值) (Transact-SQL)
复合运算符 (Transact-SQL)