

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# BIT\_AND 関数
<a name="r_BIT_AND"></a>

BIT\_AND 関数は、単一の整数列または式内のすべての値に対してビット単位の AND 演算を実行します。この関数は、式の整数値ごとに対応する各バイナリ値の各ビットを集計します。

値のすべてにおいてどのビットにも 1 が設定されていない場合、BIT\_AND 関数は `0` の結果を返します。値のすべてにおいて 1 つ以上のビットに 1 が設定されている場合、関数は整数値を返します。この整数はこれらのビットのバイナリ値に対応する数値です。

例えば、テーブルは列に 4 つの整数値を含みます (3、7、10、および 22)。これらの整数は、次のようにバイナリで表されます。


| 整数 | バイナリ値 | 
| --- | --- | 
| 3 |  11 | 
| 7 | 111 | 
| 10 | 1010 | 
| 22 | 10110 | 

このデータセットの BIT\_AND 演算は、すべてのビットで最後から 2 番目の位置にのみ `1` が設定されていることが分かります。結果は、整数値 `00000010` を表す `2` のバイナリ値です。したがって、BIT\_AND 関数は `2` を返します。

## 構文
<a name="r_BIT_AND-synopsis"></a>

```
BIT_AND ( [DISTINCT | ALL] expression )
```

## 引数
<a name="r_BIT_AND-arguments"></a>

 * 式*   
関数の対象となる列または式。この式には、INT、INT2、または INT8 のデータ型がある必要があります。関数は同等の INT、INT2、または INT8 のデータ型を返します。

DISTINCT \| ALL  
引数 DISTINCT を指定すると、この関数は結果を計算する前に指定された式から重複した値をすべて削除します。引数 ALL 指定すると、この関数は重複する値をすべて保持します。ALL がデフォルトです。詳細については、「[ビット単位の集計の DISTINCT サポート](c_bitwise_aggregate_functions.md#distinct-support-for-bit-wise-aggregations)」を参照してください。

## 例
<a name="r_bit_end_example"></a>

有効な企業情報が整数列に保存されるとすると、ビット単位関数を使用してこの情報を抽出および集計できます。次のクエリは USERLIKES と呼ばれるテーブルの LIKES 列に BIT\_AND 関数を適用し、CITY 列による結果をグループ化します。

```
select city, bit_and(likes) from userlikes group by city 
order by city;
city          | bit_and
--------------+---------
Los Angeles   |       0
Sacramento    |       0
San Francisco |       0
San Jose      |      64
Santa Barbara |     192
(5 rows)
```

これらの結果は次のように解釈できます。
+ サンタバーバラの整数値 `192` は、バイナリ値 `11000000` に変換されます。つまり、この都市のすべてのユーザーがスポーツと演劇を好きですが、すべてのユーザーがその他のタイプのイベントを好きというわけではありません。
+ 整数 `64` は `01000000` に変換されます。したがって、サンノゼのユーザーの場合、全員が好きなイベントタイプは演劇のみです。
+ 他の 3 都市の `0` の値は、「好き」と回答したユーザーがこれらの都市で 1 人もいないことを示します。