BIT_AND_AGG
目的
BIT_AND_AGG
は、ビット単位のAND演算の結果を戻すビット単位の集計ファンクションです。
BIT_AND_AGG
は、GROUP
BY
問合せの一部、ウィンドウ・ファンクションまたは分析ファンクションとして使用できます。BIT_AND_AGG
の戻り型は常に数値です。
セマンティクス
キーワードDISTINCT
またはUNIQUE
を指定すると、expr
に含まれる一意の値のみが計算に使用されます。UNIQUE
は、ANSI規格ではなく、Oracle固有のキーワードです。
expr
列のNULL値は無視されます。
グループ内のすべての行にNULLのexpr
値がある場合、NULLを戻します。
浮動小数点値は、集計の前に整数に切り捨てられます。たとえば、値4.64は4に変換され、値4.4も4に変換されます。
負の数値は、集計操作の実行前に、内部的に2の補数の形式で表されます。結果として生成される集計が負の値になる可能性があります。
サポートされる入力の範囲: -2の127乗から(2の127乗) -1まで
数値は、集計の前に、128ビットの10進表記に内部的に変換されます。結果として生成された集計はOracleの数値に変換されます。
特定の値セットについて、ビット単位の集計の結果は常に決定的であり、順序とは無関係です。
例7-2 BIT_AND_AGGファンクションの使用
2つの数値とそのビット単位の表現を選択します。
SELECT '011' num, bin_to_num(0,1,1) bits FROM dual
UNION ALL SELECT '101' num, bin_to_num(1,0,1) bits FROM dual;
NUM BITS
--- ----------
011 3
101 5
ビット単位のAND演算を実行します。
SELECT bit_and_agg(bits)
FROM (SELECT '011' num, bin_to_num(0,1,1) bits FROM dual
UNION ALL SELECT '101' num, bin_to_num(1,0,1) bits FROM dual);
BIT_AND_AGG(BITS)
-----------------
1
最初のビットのみが両方の行で同一であるため、結果は001であり、これは数値1です。