位函数和运算符包括
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