✅ Azure 流分析 ✅ 构造事件流
在两个整数值之间执行按位逻辑 OR 运算,计算两个表达式中的每个对应位。
语法
expression | expression
论据
expression
数据类型位或 bigint 的任何有效表达式。 表达式被视为按位运算的二进制数。
返回类型
如果两个输入值均为位,则为 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 |
|---|---|---|---|---|---|---|---|
| 假 | 是 | Null | 假 | 是 | 是 | 是 | 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 |
|---|---|---|
| 位 | bigint | bigint |