Transact-SQL 参考

|(按位 OR)

在 Transact-SQL 语句中,将两个给定的整型值转换为二进制表达式,对其执行按位逻辑或运算。

语法

expression | expression

参数

expression

是任何有效的 Microsoft® SQL Server™ 表达式(表达式必须由整数数据类型分类中的任何数据类型组成。expression 是一个经过处理并转换为二进制数字以便进行位运算的整数。

结果类型

如果输入值为 int,则返回 int;如果输入值为 smallint,则返回 smallint;或者如果输入值为 tinyint,则返回 tinyint

注释

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

位运算符 | 要求有两个表达式,并且只可以用在具有整型数据类型分类的表达式上。

如果左右表达式的整型数据类型不同(例如,左边 expression 的数据类型是 smallint,右边 expression 的数据类型是 int),那么将较小的数据类型的参数转换为较大的数据类型。在该示例中,数据类型为 smallint expression 被转换为 int 数据类型。

示例

下面的示例创建一个具有 int 数据类型的表以显示原始的值,并将该表放入一行中。

USE master
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 列上执行按位 OR 运算。

USE MASTER
GO
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。在这两个值之间执行按位 OR 运算所产生的二进制结果是 0000 0000 1110 1011,即十进制数 235。

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

请参见

表达式

运算符(位运算符)