BIT_OR 関数は、単一の整数列または式内のすべての値に対してビット単位の OR 演算を実行します。この関数は、式の整数値ごとに対応する各バイナリ値の各ビットを集計します。
例えば、テーブルが列に 4 つの整数値を含んでいるとします (3、7、10、および 22)。これらの整数は、次のようにバイナリで表されます。
整数 | バイナリ値 |
---|---|
3 | 11 |
7 | 111 |
10 | 1010 |
22 | 10110 |
BIT_OR 関数を整数値のセットに適用すると、オペレーションは各位置で 1
が見つかった値を探します。この場合、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 サポート」を参照してください。
例
次のクエリは USERLIKES と呼ばれるテーブルの LIKES 列に BIT_OR 関数を適用し、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)
表示された 4 都市では、すべてのイベントタイプで少なくとも 1 人のユーザーが好きと答えています (255=11111111
)。ロサンゼルスでは、スポーツを除くすべてのイベントタイプで「好き」と答えたユーザーが少なくとも 1 人います (127=01111111
)。