~
运算符说明
一元运算符,二进制取反。对每一个比特位执行非(NOT)操作。NOT a 结果为 a 的反转(即反码),参数只能是数字或 NULL。
结果类型取决于参数是否为二进制字符串或数字:
-
当参数为二进制字符串类型,并且其中至少一个不是十六进制
literal
、位literal
或NULL literal
时,则进行二进制字符串求值计算;否则会进行数值求值计算,并根据需要将参数转换为无符号 64 位整数。 -
二进制字符串求值产生一个与参数长度相同的二进制字符串。如果参数的长度不相等,则会发生
ER_INVALID_BITWISE_OPERANDS_SIZE
错误。数值计算产生一个无符号的 64 位整数。
语法结构
> SELECT ~value1;
示例
mysql> select ~-5;
+--------+
| ~ (-5) |
+--------+
| 4 |
+--------+
1 row in set (0.00 sec)
mysql> select ~null;
+-------+
| ~null |
+-------+
| NULL |
+-------+
1 row in set (0.00 sec)
mysql> select ~a, ~b from t1;
+------+----------------------+
| ~a | ~b |
+------+----------------------+
| 0 | 18446744073709551614 |
| 4 | 18446744073709551610 |
+------+----------------------+
2 rows in set (0.00 sec)