|(位或)(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,则返回 tinyint

备注

位运算符 | 取两个表达式的每个对应位,在两个表达式之间执行逻辑位或运算。 如果在输入表达式中有一个位为 1 或两个位均为 1(对于正在解析的当前位),那么结果中的位将被设置为 1;如果输入表达式中的两个位都不为 1,则结果中的位将被设置为 0。

如果左侧和右侧的表达式具有不同的整数数据类型(例如,左侧的表达式的数据类型为 smallint,右侧的表达式的数据类型为 int),则会将较小数据类型的参数转换为较大数据类型。 此示例中,smallint 表达式转换成了 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_value 列和 b_int_value 列执行位或运算

SELECT a_int_value | b_int_value  
FROM bitwise;  
GO  

下面是结果集。

-----------   
235           
  
(1 row(s) affected)  

170(以下的 a_int_value 或 A)的二进制表示形式为 0000 0000 1010 1010。 75(以下的 b_int_value 或 B)的二进制表示形式为 0000 0000 0100 1011。 对这两个值执行位或运算产生的二进制结果为 0000 0000 1110 1011,即十进制数 235。

(A | B)  
0000 0000 1010 1010  
0000 0000 0100 1011  
-------------------  
0000 0000 1110 1011  

另请参阅

运算符 (Transact-SQL)
位运算符 (Transact-SQL)
|=(位异或赋值)(Transact-SQL)
复合运算符 (Transact-SQL)