适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统 (PDW)
Microsoft Fabric
中的 SQL 分析终结点Microsoft Fabric
中的仓库Microsoft Fabric 预览版中的 SQL 数据库
位运算符在两个表达式之间执行位操作,这两个表达式可以为整数数据类型类别中的任何数据类型。
位运算符将两个整数值转换为二进制位,对每个位执行 AND、OR 或 NOT 操作并得出结果。 然后将结果转换为整数。
例如,整数 170 转换为二进制是 1010 1010。
整数 75 转换为二进制是 0100 1011。
| Operator | Bitwise math |
|---|---|
|
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 数据类型除外),但两个操作数不能同时是二进制字符串数据类型类别中的某种数据类型。 下表显示所支持的操作数数据类型。
| Left operand | Right operand |
|---|---|
| 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 |