BIT_OR 函数
BIT_OR 函数会对单个整数列或表达式中的所有值运行按位 OR 运算。此函数会聚合与表达式中的每个整数值对应的每个二进制值的每个位。
例如,假设您的表中的一个列包含 4 个整数值:3、7、10 和 22。这些整数用二进制格式表示,如下所示。
整数 | 二进制值 |
---|---|
3 | 11 |
7 | 111 |
10 | 1010 |
22 | 10110 |
如果将 BIT_OR 函数应用于整数值集合,则该操作将查找 1
在每个位置找到的任何值。在这种情况下,1
存在于至少一个值的后 5 个位置,从而生成二进制结果 00011111
;因此,该函数将返回 31
(或 16 + 8 + 4 + 2 + 1
)。
语法
BIT_OR ( [DISTINCT | ALL] expression )
参数
- expression
-
对其执行函数的目标列或表达式。此表达式必须具有 INT、INT2 或 INT8 数据类型。该函数返回等同的 INT、INT2 或 INT8 数据类型。
- DISTINCT | ALL
-
利用参数 DISTINCT,该函数可在计算结果之前消除指定表达式的所有重复值。利用参数 ALL,该函数可保留所有重复值。ALL 是默认值。有关更多信息,请参阅 按位聚合的 DISTINCT 支持。
示例
以下查询会将 BIT_OR 函数应用于名为“USERLIKES”的表的 LIKES 列并按 CITY 列对结果进行分组。
select city, bit_or(likes) from userlikes group by city order by city; city | bit_or --------------+-------- Los Angeles | 127 Sacramento | 255 San Francisco | 255 San Jose | 255 Santa Barbara | 255 (5 rows)
对于所列的四个城市,至少有一个用户喜欢全部活动类型 (255=11111111
)。对于洛杉矶,至少有一个用户喜欢除运动之外的所有活动类型 (127=01111111
)。