【发布时间】:2011-06-01 00:50:51
【问题描述】:
MySQL 中的<=> 是什么意思?
【问题讨论】:
-
这个大了3岁……
-
那个人有 6 倍的浏览量和 2 倍的答案。 SO是一个奇怪的地方。
标签: mysql null operators equality
MySQL 中的<=> 是什么意思?
【问题讨论】:
标签: mysql null operators equality
manual 说明了一切:
NULL 安全相等。该运算符 执行相等比较,例如 = 运算符,但返回 1 而不是 如果两个操作数都为 NULL,则为 NULL, 如果有一个操作数,则为 0 而不是 NULL 为 NULL。
mysql> select NULL <=> NULL;
+---------------+
| NULL <=> NULL |
+---------------+
| 1 |
+---------------+
1 row in set (0.00 sec)
mysql> select NULL = NULL;
+-------------+
| NULL = NULL |
+-------------+
| NULL |
+-------------+
1 row in set (0.00 sec)
mysql> select NULL <=> 1;
+------------+
| NULL <=> 1 |
+------------+
| 0 |
+------------+
1 row in set (0.00 sec)
mysql> select NULL = 1;
+----------+
| NULL = 1 |
+----------+
| NULL |
+----------+
1 row in set (0.00 sec)
mysql>
【讨论】:
和= 之间的区别在于其中一个或两个操作数都是NULL 值。例如:
NULL <=> NULL gives True
NULL = NULL gives NULL
这是<=> 值 1、2 和 NULL 比较的完整表:
与普通的相等运算符比较:
| 1 2 空 -----+-------- 1 |真假空 2 |假真空 空 |空 空 空【讨论】:
<=> 是所谓的NULL-safe-equality operator。
SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
-> 1, 1, 0
SELECT 1 = 1, NULL = NULL, 1 = NULL;
-> 1, NULL, NULL
【讨论】:
与 SQL 标准关键字 DISTINCT 相同
SELECT * FROM somewhere WHERE `address1` is not distinct from `address2`
【讨论】: