# **^**

## **运算符说明**

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

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

- 当参数为二进制字符串类型，并且其中至少一个不是十六进制 `literal`、位 `literal` 或 `NULL literal` 时，则进行二进制字符串求值计算；否则会进行数值求值计算，并根据需要将参数转换为无符号 64 位整数。

- 二进制字符串求值产生一个与参数长度相同的二进制字符串。如果参数的长度不相等，则会发生 `ER_INVALID_BITWISE_OPERANDS_SIZE` 错误。数值计算产生一个无符号的 64 位整数。

## **语法结构**

```sql
SELECT value1 ^ value2;
```

## **示例**

```text
mysql> SELECT 1 ^ 1;
+-------+
| 1 ^ 1 |
+-------+
|     0 |
+-------+
1 row in set (0.00 sec)

mysql> SELECT 1 ^ 0;
+-------+
| 1 ^ 0 |
+-------+
|     1 |
+-------+
1 row in set (0.01 sec)

mysql> SELECT 11 ^ 3;
+--------+
| 11 ^ 3 |
+--------+
|      8 |
+--------+
1 row in set (0.01 sec)

mysql> select null ^ 2;
+----------+
| null ^ 2 |
+----------+
|     NULL |
+----------+
1 row in set (0.01 sec)

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

mysql> select a ^ 2, b ^ 2 from t1;
+-------+-------+
| a ^ 2 | b ^ 2 |
+-------+-------+
|    -3 |     3 |
|    -7 |     7 |
+-------+-------+
2 rows in set (0.01 sec)
```
