我正在学习 MySql 教程,并且完成了以下查询。
mysql> select null <> null;
+--------------+
| null <> null |
+--------------+
| NULL |
+--------------+
我不明白为什么结果是 Null,我认为它需要是 1 或 0(基于其他比较运算符的结果)?
为什么它给出的结果为 Null。
Thanks,
因为任何比较运算符都超过NULL
出现在 sql 过滤器中应该(并且确实)使该行不被选择。
您应该使用空安全运算符<=>
与包含的列进行比较NULL
价值观和其他NOT NULL
值但是<=>
将返回1
当两个操作数都是NULL
因为NULL
永远不会被认为等于NULL
.
这是空安全运算符很有用的情况的示例:
你有一张桌子:
Phones
----
Number
CountryCode (can be NULL)
并且您想要选择所有非西班牙的电话号码(国家/地区代码 34)。第一次尝试通常是:
SELECT Number FROM Phones WHERE CountryCode <> 34;
但您注意到没有列出没有国家/地区代码(NULL 值)的电话,并且您希望将它们包含在结果中,因为它们也不是来自西班牙:
SELECT Number FROM Phones WHERE CountryCode <=> 34;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)