我正在为MySql学习一个教程,我完成了下面的查询。
mysql> select null <> null;
+--------------+
| null <> null |
+--------------+
| NULL |
+--------------+我不明白为什么结果是零,它需要是1或0,我认为(根据其他比较运算符的结果)?
为什么它给出的结果是空的。
谢谢,
发布于 2014-05-25 12:52:45
因为在selected中出现的对NULL的任何比较操作符都应该(而且确实)使行不被选中。
您应该使用空安全运算符<=>与包含NULL值和其他NOT NULL值的列进行比较,但是当两个操作数都是NULL时,<=>将返回1,因为NULL从来不被认为等于NULL。
--这是空安全操作符有用的一个例子:
你有一张桌子:
Phones
----
Number
CountryCode (can be NULL) 您希望选择所有来自西班牙的电话号码(国家代码34)。第一次尝试通常是:
SELECT Number FROM Phones WHERE CountryCode <> 34;但是,您注意到没有列出没有国家代码(空值)的电话,您希望将它们包括在您的结果中,因为它们不是来自西班牙:
SELECT Number FROM Phones WHERE CountryCode <=> 34;发布于 2014-05-25 13:00:48
select null <> null;这里<>不是null safe operator。是Not equal operator。参考mysql的官方网站。
Null safe operator是<=>
https://stackoverflow.com/questions/23855477
复制相似问题