| (按位或) (Azure 流分析)

在两个整数值之间执行按位逻辑 OR 运算,计算两个表达式中的每个相应位。

语法

expression | expression

参数

expression

数据类型位或 bigint 的任何有效表达式。 表达式被视为按位运算的二进制数。

返回类型

如果两 个输入值为 bit,则为 bit

如果一个或两个输入值都为 bigint,则 bigint。

注解

|按位运算符在两个表达式之间执行按位逻辑 OR, 并获取两个表达式的每个对应位。 如果输入表达式中要解析的当前位的任一位或两个位 () 值为 1,则结果中的位设置为 1;否则,结果中的位设置为 0。

为了说明,170 的二进制表示形式是 0000 0000 1010 1010。 75 的二进制表示形式为 0000 0000 0100 1011。 对这两个值执行按位 AND 运算将生成二进制结果 0000 0000 1110 1011,即十进制 235。

(170 | 75)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 1011

需要指出的是,将 FLOAT 值强制转换为 BIGINT,并对其应用按位运算符通常不会返回与将其强制转换为 BIT 和应用相同运算符相同的结果:

  • 第一个选项: 170 |75.0 => 170 | 75 = 235
  • 第二个选项:170 |75.0 => 170 | 1 = 171

有关转换为位的规则,请参阅 数据类型概述

示例

使用通用输入数据集:

WITH MyCTE AS (
	SELECT
		CAST(0 AS BIT) AS bit0,
		CAST(1 AS BIT) AS bit1,
		CAST(NULL AS BIT) AS bitN,
		CAST(0 AS BIGINT) AS bigint0,
		CAST(1 AS BIGINT) AS bigint1,
		CAST(NULL AS BIGINT) AS bigintN
	FROM input
)

表达式应用 运算符:

SELECT
	bit0,
	bit1,
	bitN,
	bit0 | bit0 AS OR00,
	bit0 | bit1 AS OR01,
	bit1 | bit0 AS OR10,
	bit1 | bit1 AS OR11,
	bitN | bit0 AS ORnull
INTO bitOR
FROM MyCTE

返回:

bit0 bit1 bitN OR00 OR01 OR10 OR11 ORnull
false true Null false true true true Null

bigint 表达式上应用 运算符:

SELECT
	bigint0,
	bigint1,
	bigintN,
	bigint0 | bigint0 AS OR00,
	bigint0 | bigint1 AS OR01,
	bigint1 | bigint0 AS OR10,
	bigint1 | bigint1 AS OR11,
	bigintN | bigint1 AS ORnull,
	170 | 75 AS ORvalues
INTO bigintOR
FROM MyCTE

返回:

bigint0 bigint1 bigintN OR00 OR01 OR10 OR11 ORnull ORvalues
0 1 Null 0 1 1 1 Null 235

验证 输出类型

SELECT
	GetType(bit0 | bit0) AS ORtype_bit,
	GetType(bigint0 | bigint0) AS ORtype_bigint,
	GetType(bit0 | bigint0) AS ORtype_mixed
INTO typesOR
FROM MyCTE

返回:

ORtype_bit ORtype_bigint ORtype_mixed
bit bigint bigint

另请参阅