<<

运算符说明

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

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

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

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

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

语法结构

  1. > SELECT value1 << value2;

示例

  1. mysql> SELECT 1 << 2;
  2. +--------+
  3. | 1 << 2 |
  4. +--------+
  5. | 4 |
  6. +--------+
  7. 1 row in set (0.01 sec)
  8. mysql> select -1 << 2;
  9. +---------+
  10. | -1 << 2 |
  11. +---------+
  12. | -4 |
  13. +---------+
  14. 1 row in set (0.01 sec)
  15. mysql> select null << 2;
  16. +-----------+
  17. | null << 2 |
  18. +-----------+
  19. | NULL |
  20. +-----------+
  21. 1 row in set (0.01 sec)
  22. create table t1(a int, b int unsigned);
  23. insert into t1 values (-1, 1), (-5, 5);
  24. mysql> select a << 2, b << 2 from t1;
  25. +--------+--------+
  26. | a << 2 | b << 2 |
  27. +--------+--------+
  28. | -4 | 4 |
  29. | -20 | 20 |
  30. +--------+--------+
  31. 2 rows in set (0.01 sec)