位运算符 (Transact-SQL)
适用于:Microsoft Fabric Microsoft Fabric Warehouse 中的 SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics 终结点
位运算符在两个表达式之间执行位操作,这两个表达式可以为整数数据类型类别中的任何数据类型。
位运算符将两个整数值转换为二进制位,对每个位执行 AND
、OR
或 NOT
操作并得出结果。 然后将结果转换为整数。
例如,整数 170
转换为二进制是 1010 1010
。
整数 75
转换为二进制是 0100 1011
。
运算符 | 位运算 |
---|---|
AND 如果两个位置上的位均为 1 ,则结果为 1 。 |
1010 1010 = 1700100 1011 = 75----------------- 0000 1010 = 10 |
OR 如果两个位置上任意一个位置的位为 1 ,则结果为 1 。 |
1010 1010 = 1700100 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 |