~

运算符说明

一元运算符,二进制取反。对每一个比特位执行非(NOT)操作。NOT a 结果为 a 的反转(即反码)。

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

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

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

语法结构

  1. > SELECT value1 ~ value2;

示例

  1. mysql> select ~-5;
  2. +--------+
  3. | ~ (-5) |
  4. +--------+
  5. | 4 |
  6. +--------+
  7. 1 row in set (0.00 sec)
  8. mysql> select ~null;
  9. +-------+
  10. | ~null |
  11. +-------+
  12. | NULL |
  13. +-------+
  14. 1 row in set (0.00 sec)
  15. mysql> select ~a, ~b from t1;
  16. +------+----------------------+
  17. | ~a | ~b |
  18. +------+----------------------+
  19. | 0 | 18446744073709551614 |
  20. | 4 | 18446744073709551610 |
  21. +------+----------------------+
  22. 2 rows in set (0.00 sec)