# **>>**

## **运算符说明**

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

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

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

- 二进制字符串求值产生一个与参数长度相同的二进制字符串。数值计算产生一个无符号的 64 位整数。

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

## **语法结构**

```sql
SELECT value1 >> value2;
```

## **示例**

```text
mysql> select 1024 >> 2;
+-----------+
| 1024 >> 2 |
+-----------+
|       256 |
+-----------+
1 row in set (0.01 sec)

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

mysql> select null >> 2;
+-----------+
| null >> 2 |
+-----------+
|      NULL |
+-----------+
1 row in set (0.00 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 |
+--------+--------+
|     -1 |      0 |
|     -2 |      1 |
+--------+--------+
2 rows in set (0.01 sec)
```
