位函数与操作符用于处理二进制数据。本文介绍云原生数据仓库 AnalyticDB MySQL 版位函数和操作符的用法与示例。
BIT_COUNT:系统先将参数转换为二进制,然后返回二进制中1的个数。
&:按位AND。
~:反转所有位。
|:按位OR。
^:按位异或。
>>(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 |
^
命令说明:按位异或。
返回值类型: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 |