位函数和运算符包括
BIT_COUNT(),
BIT_AND(),
BIT_OR(),
BIT_XOR(),
&,
|,
^,
~,
<<和
>>。(BIT_AND()、
BIT_OR()和
BIT_XOR()是第 12.19.1 节“聚合函数描述”中描述的聚合函数。)位函数和运算符需要BIGINT
(64 位整数)参数和返回
BIGINT值,因此它们的最大范围为 64 位。其他类型的参数(例如 the
BINARY和
VARBINARY二进制字符串类型)被转换为BIGINT并且可能会发生截断。
以下列表描述了可用的位函数和运算符:
按位或。
结果是一个无符号的 64 位整数。
mysql> SELECT 29 | 15; -> 31按位与。
结果是一个无符号的 64 位整数。
mysql> SELECT 29 & 15; -> 13按位异或。
结果是一个无符号的 64 位整数。
mysql> SELECT 1 ^ 1; -> 0 mysql> SELECT 1 ^ 0; -> 1 mysql> SELECT 11 ^ 3; -> 8将 longlong (
BIGINT) 数字向左移动。结果是一个无符号的 64 位整数。该值被截断为 64 位。特别是,如果移位计数大于或等于无符号 64 位数字的宽度,则结果为零。
mysql> SELECT 1 << 2; -> 4将 longlong (
BIGINT) 数字右移。结果是一个无符号的 64 位整数。该值被截断为 64 位。特别是,如果移位计数大于或等于无符号 64 位数字的宽度,则结果为零。
mysql> SELECT 4 >> 2; -> 1反转所有位。
结果是一个无符号的 64 位整数。
mysql> SELECT 5 & ~1; -> 4返回在参数中设置
N为无符号 64 位整数的位数,或者NULL如果参数是NULL.mysql> SELECT BIT_COUNT(29), BIT_COUNT(b'101010'); -> 4, 3