&(按位与)进行该运算时,数据库系统会先将十进制的数转换为二进制的数。然后对应操作数的每个二进制位上进行与运算。1和1相与得1,与0相与得0。运算完成后再将二进制数变回十进制数。例如1|1结果为 1,0|0结果为0,1|0结果为1,这和逻辑运算中的||非常类似。
mysql> SELECT 10|15,9|4|2; +-------+-------+ | 10|15 | 9|4|2 | +-------+-------+ | 15 | 15 | +-------+-------+
10 的补码为 1010,15 的补码为 1111,按位或运算之后,结果为 1111,即整数 15;9 的补码为 1001,4 的补码为 0100,2 的补码为 0010,按位或运算之后,结果为 111,即整数 15。
mysql> SELECT -7|-1; +----------------------+ | -7|-1 | +----------------------+ | 18446744073709551615 | +----------------------+