>>

运算符说明

该操作符会将第一个操作数向右移动指定的位数。向右被移出的位被丢弃,左侧用 0 补充。

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

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

无论参数类型如何,移出值末尾的位都会在没有警告的情况下丢失。特别是,如果移位计数大于或等于位参数中的位数,则结果中的所有位均为 0。

语法结构

1. > SELECT value1 >> value2;

示例

1. mysql> select 1024 >> 2;
2. +-----------+
3. | 1024 >> 2 |
4. +-----------+
5. |       256 |
6. +-----------+
7. 1 row in set (0.01 sec)

9. mysql> select -5 >> 2;
10. +---------+
11. | -5 >> 2 |
12. +---------+
13. |      -2 |
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.00 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 |      0 |
33. |     -2 |      1 |
34. +--------+--------+
35. 2 rows in set (0.01 sec)