位运算符 (Transact-SQL)

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

位运算符在两个表达式之间执行位操作,这两个表达式可以为整数数据类型类别中的任何数据类型。

位运算符将两个整数值转换为二进制位,对每个位执行 ANDORNOT 操作并得出结果。 然后将结果转换为整数。

例如,整数 170 转换为二进制是 1010 1010

整数 75 转换为二进制是 0100 1011

运算符 位运算
AND

如果两个位置上的位均为 1,则结果为 1
1010 1010 = 170
0100 1011 = 75
-----------------
0000 1010 = 10
OR

如果两个位置上任意一个位置的位为 1,则结果为 1
1010 1010 = 170
0100 1011 = 75
-----------------
1110 1011 = 235
NOT

对每个位位置上的位值取反。
1010 1010 = 170
-----------------
0101 0101 = 85

以下文章详细介绍数据库引擎中提供的位运算符:

SQL Server 2022 (16.x) 中引入了以下位运算符:

位运算符的操作数可以是整数或二进制字符串数据类型类别中的任何数据类型(image 数据类型除外),但两个操作数不能同时是二进制字符串数据类型类别中的某种数据类型。 下表显示所支持的操作数数据类型。

左操作数 右操作数
binary int、smallint 或 tinyint
bit int、smallint、tinyint 或 bit
bigint bigint、int、smallint、tinyint、binary 或 varbinary
int int、smallint、tinyint、binary 或 varbinary
smallint int、smallint、tinyint、binary 或 varbinary
tinyint int、smallint、tinyint、binary 或 varbinary
varbinary int、smallint 或 tinyint

另请参阅