ビット関数と演算子を使用して、バイナリデータを処理できます。 このトピックでは、AnalyticDB for MySQLのビット関数と演算子の構文と例について説明します。
BIT_COUNT: 引数をバイナリ値に変換し、値で1に設定されているビット数を返します。
&: bitwise AND。
~: すべてのビットを反転します。
|: bitwise OR。
^: ビット単位のXOR。
>> (BITWISE_RIGHT_SHIFT): 値を右にシフトします。
<< (BITWISE_LEFT_SHIFT): 値を左にシフトする。
BIT_COUNT
bit_count(bigint x)
bit_count(double x)
bit_count(varchar x)説明: この関数は、引数をバイナリ値に変換し、値で
1に設定されているビット数を返します。戻り値のデータ型: BIGINT。
例:
select bit_count(2); +--------------+ | bit_count(2) | +--------------+ | 1 |select bit_count(pi()); +-----------------+ | bit_count(pi()) | +-----------------+ | 2 |select bit_count('123'); +------------------+| bit_count('123') | +------------------+ | 6 |
&
説明: この関数はビット単位の
ANDに使用されます。戻り値のデータ型: BIGINT。
例:
select 12 & 15; +---------------------+ | bitwise_and(12, 15) | +---------------------+ | 12 |
~
説明: この関数はすべてのビットを反転します。
戻り値のデータ型: BIGINT。
例:
select 2 & ~1; +--------------------------------+ | bitwise_and(2, bitwise_not(1)) | +--------------------------------+ | 2 |
|
説明: この関数はビット単位の
ORに使用されます。戻り値のデータ型: BIGINT。
例:
select 29 | 15; +--------------------+ | bitwise_or(29, 15) | +--------------------+ | 31 |
^
説明: この関数はビット単位のXORに使用されます。
戻り値のデータ型: BIGINT。
例:
select 1 ^ 10; +--------------------+ | bitwise_xor(1, 10) | +--------------------+ | 11 |
>> (BITWISE_RIGHT_SHIFT)
bitwise_right_shift(double x, double y)
bitwise_right_shift(varchar x, varchar y)
bitwise_right_shift(bigint x, bigint y)説明: この関数は値を右にシフトします。
戻り値のデータ型: BIGINT。
例:
select 3 >> 2; +---------------------------+ | bitwise_right_shift(3, 2) | +---------------------------+ | 0 |select 3.4 >> 23.2; +--------------------------------+ | bitwise_right_shift(3.4, 23.2) | +--------------------------------+ | 0 |
<< (BITWISE_LEFT_SHIFT)
bitwise_left_shift(double x, double y)
bitwise_left_shift(varchar x, varchar y)
bitwise_left_shift(bigint x, bigint y)説明: この関数は値を左にシフトします。
戻り値のデータ型: BIGINT。
例:
SELECT 3 << 2; +--------------------------+ | bitwise_left_shift(3, 2) | +--------------------------+ | 12 |select '3' << '2'; +------------------------------+ | bitwise_left_shift('3', '2') | +------------------------------+ | 12 |select 3.4 << 23.2; +-------------------------------+ | bitwise_left_shift(3.4, 23.2) | +-------------------------------+ | 25165824 |