为什么mysql中的null<> null = null

时间:2014-05-25 12:50:35

标签: mysql

我正在浏览MySql的教程,我通过以下查询。

mysql> select null <> null;
+--------------+
| null <> null |
+--------------+
|         NULL |
+--------------+

我不明白为什么结果为Null,我认为它需要为1或0(基于其他比较运算符的结果)?

为什么它将结果作为Null。

谢谢,

2 个答案:

答案 0 :(得分:1)

因为在sql过滤器中出现的NULL之上的任何比较运算符应该(并且确实)使得行不被选中。

您应该使用null安全操作符<=>来比较包含NULL值和其他NOT NULL值的列,但当两个操作数都是<=>时,1将返回NULL NULL因为NULL永远不会被视为等于Phones ---- Number CountryCode (can be NULL)

这是一个空安全运算符很有用的情况示例:

你有一张桌子:

SELECT Number FROM Phones WHERE CountryCode <> 34;

并且您要选择所有不是来自西班牙的电话号码(国家/地区代码34)。第一次尝试通常是:

SELECT Number FROM Phones WHERE CountryCode <=> 34;

但是你注意到没有国家代码(NULL值)的电话没有列出,你想把它们包含在你的结果中,因为它们不是来自西班牙:

{{1}}

答案 1 :(得分:1)

select null <> null;

此处<>不是null safe operator。它是Not equal operator。 请参考mysql的official website Null safe operator<=>