|

运算符说明

位运算符或,按位或。对每一对比特位执行或(OR)操作。如果 a 或 b 为 1,则 a OR b 结果为 1。

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

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

语法结构

1. > SELECT value1 | value2;

示例

1. mysql> SELECT 29 | 15;
2. +---------+
3. | 29 | 15 |
4. +---------+
5. |      31 |
6. +---------+
7. 1 row in set (0.01 sec)

9. mysql> select null | 2;
10. +----------+
11. | null | 2 |
12. +----------+
13. |     NULL |
14. +----------+
15. 1 row in set (0.01 sec)

17. mysql> select null | 2;
18. +----------+
19. | null | 2 |
20. +----------+
21. |     NULL |
22. +----------+
23. 1 row in set (0.01 sec)

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

28. mysql> select a | 2, b | 2 from t1;
29. +-------+-------+
30. | a | 2 | b | 2 |
31. +-------+-------+
32. |    -1 |     3 |
33. |    -5 |     7 |
34. +-------+-------+