^

运算符说明

按位异或。对每一对比特位执行异或(XOR)操作。当 a 和 b 不相同时,a XOR b 的结果为 1。

结果类型取决于参数是否被为二进制字符串或数字:

  • 当参数为二进制字符串类型,并且其中至少一个不是十六进制 literal、位 literal 或 NULL literal 时,则进行二进制字符串求值计算;否则会进行数值求值计算,并根据需要将参数转换为无符号 64 位整数。
  • 二进制字符串求值产生一个与参数长度相同的二进制字符串。如果参数的长度不相等,则会发生 ER_INVALID_BITWISE_OPERANDS_SIZE 错误。数值计算产生一个无符号的 64 位整数。

语法结构

1. > SELECT value1 ^ value2;

示例

1. mysql> SELECT 1 ^ 1;
2. +-------+
3. | 1 ^ 1 |
4. +-------+
5. |     0 |
6. +-------+
7. 1 row in set (0.00 sec)

9. mysql> SELECT 1 ^ 0;
10. +-------+
11. | 1 ^ 0 |
12. +-------+
13. |     1 |
14. +-------+
15. 1 row in set (0.01 sec)

17. mysql> SELECT 11 ^ 3;
18. +--------+
19. | 11 ^ 3 |
20. +--------+
21. |      8 |
22. +--------+
23. 1 row in set (0.01 sec)

25. mysql> select null ^ 2;
26. +----------+
27. | null ^ 2 |
28. +----------+
29. |     NULL |
30. +----------+
31. 1 row in set (0.01 sec)

33. create table t1(a int, b int unsigned);
34. insert into t1 values (-1, 1), (-5, 5);

36. mysql> select a ^ 2, b ^ 2 from t1;
37. +-------+-------+
38. | a ^ 2 | b ^ 2 |
39. +-------+-------+
40. |    -3 |     3 |
41. |    -7 |     7 |
42. +-------+-------+
43. 2 rows in set (0.01 sec)