Skip to content

9. MySQL的运算符

1. 算术运算符

  • +
  • -
  • *
  • /n1 DIV n2
  • %MOD(n1, n2)

除数为0时,返回NULL。

2. 比较运算符

  • 字符串以不区分大小写的方式比较

  • NULL不能用=比较

  • <=>=的区别是可以进行NULL的比较
MariaDB [blog]> SELECT 10=2.3,'a'='A', NULL=0, NULL<=>NULL;
+--------+---------+--------+-------------+
| 10=2.3 | 'a'='A' | NULL=0 | NULL<=>NULL |
+--------+---------+--------+-------------+
|      0 |       1 |   NULL |           1 |
+--------+---------+--------+-------------+

3. 逻辑/布尔运算符

  • AND&&:任意一个为NULL,则结果为NULL
  • OR||:一个为NULL,另一个为非零值,则结果为1,否则为NULL
  • NOT!
  • XOR:逻辑异或
MariaDB [blog]> SELECT 1 AND 0, NULL AND 1;
+---------+------------+
| 1 AND 0 | NULL AND 1 |
+---------+------------+
|       0 |       NULL |
+---------+------------+
MariaDB [blog]> SELECT 1 OR 0, 1 OR NULL, 0 OR NULL, NULL OR NULL;
+--------+-----------+-----------+--------------+
| 1 OR 0 | 1 OR NULL | 0 OR NULL | NULL OR NULL |
+--------+-----------+-----------+--------------+
|      1 |         1 |      NULL |         NULL |
+--------+-----------+-----------+--------------+
MariaDB [blog]> SELECT NOT NULL, NOT 2.3;
+----------+---------+
| NOT NULL | NOT 2.3 |
+----------+---------+
|     NULL |       0 |
+----------+---------+
MariaDB [blog]> SELECT 1 XOR 0, NULL XOR 0;
+---------+------------+
| 1 XOR 0 | NULL XOR 0 |
+---------+------------+
|       1 |       NULL |
+---------+------------+

4. 位运算符

将操作数转化为二进制后对每一位进行指定的位运算,得到的结果再转化为十进制数。

  • &
  • |
  • ~:位取反
  • ^:位异或
  • <<:位左移
  • >>:位右移

不够的用0补位。

MariaDB [blog]> SELECT ~1;
+----------------------+
| ~1                   |
+----------------------+
| 18446744073709551614 |
+----------------------+