今天复习 MySQL 的时候看到了 <=> 运算符。

众所周知,= 是等于运算符,<> 是不等于运算符,那么 <=> 是什么呢?

<=> 表示的是「安全等于」,它可以用在比较 NULL 值的时候。

当我们使用 = 来比较 NULL 值的时候会出现返回值为 NULL 的情况:

1
2
3
4
5
6
7
mysql> SELECT NULL = NULL, NULL = 1;
+-------------+----------+
| NULL = NULL | NULL = 1 |
+-------------+----------+
| NULL | NULL |
+-------------+----------+
1 row in set (0.00 sec)

而使用安全等于则可以解决这一问题:

1
2
3
4
5
6
7
mysql> SELECT NULL <=> NULL, NULL <=> 1;
+---------------+------------+
| NULL <=> NULL | NULL <=> 1 |
+---------------+------------+
| 1 | 0 |
+---------------+------------+
1 row in set (0.00 sec)

事实上,这个运算符使用的不多,当需要比较 NULL 值的时候,还可以通过 IS NULLIS NOT NULL 来实现:

1
2
3
4
5
6
7
mysql> SELECT NULL IS NULL, 1 IS NULL, NULL IS NOT NULL, 1 IS NOT NULL;
+--------------+-----------+------------------+---------------+
| NULL IS NULL | 1 IS NULL | NULL IS NOT NULL | 1 IS NOT NULL |
+--------------+-----------+------------------+---------------+
| 1 | 0 | 0 | 1 |
+--------------+-----------+------------------+---------------+
1 row in set (0.00 sec)