&(位与)(Transact-SQL)
在两个整数值之间执行“逻辑位与”运算。
适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。 |
语法
expression & expression
参数
expression
整数数据类型类别中的任何一种数据类型或者 bit、binary 或 varbinary 数据类型的任何有效表达式。 对于位运算,expression 被视为二进制数字。备注
在位运算中,只有一个 expression 可以是 binary 或 varbinary 数据类型。
结果类型
如果输入值为 int,则为 int。
如果输入值为 smallint,则为 smallint。
tinyint 如果输入值是 tinyint 或 bit。
注释
& 位运算符将在两个表达式之间执行位与逻辑运算,从两个表达式取对应的位。 当且仅当输入表达式中两个位(正在被解析的当前位)的值都为 1 时,结果中的位才被设置为 1;否则,结果中的位被设置为 0。
如果左侧和右侧的表达式具有不同的整数数据类型(例如,左侧的 expression 的数据类型为 smallint,右侧的 expression 的数据类型为 int),则会将较小数据类型的参数转换为较大数据类型。 在这种情况下,smallint expression 被转换为 int。
示例
以下示例将使用 int 数据类型创建一个表,用于存储值,并将两个值插入到一行中。
USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'bitwise')
DROP TABLE bitwise;
GO
CREATE TABLE bitwise
(
a_int_value int NOT NULL,
b_int_value int NOT NULL
);
GO
INSERT bitwise VALUES (170, 75);
GO
下面的查询将在 a_int_value 和 b_int_value 列之间执行位与运算。
USE tempdb;
GO
SELECT a_int_value & b_int_value
FROM bitwise;
GO
下面是结果集:
-----------
10
(1 row(s) affected)
170(a_int_value 或 A)的二进制表示形式是 0000 0000 1010 1010。 75(b_int_value 或 B)的二进制表示形式是 0000 0000 0100 1011。 对上述两个值执行“位与”运算将产生二进制结果 0000 0000 0000 1010,即十进制数 10。
(A & B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010