首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么null<>null=null在mysql中?

为什么null<>null=null在mysql中?
EN

Stack Overflow用户
提问于 2014-05-25 12:50:35
回答 2查看 80关注 0票数 1

我正在为MySql学习一个教程,我完成了下面的查询。

代码语言:javascript
复制
mysql> select null <> null;
+--------------+
| null <> null |
+--------------+
|         NULL |
+--------------+

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

为什么它给出的结果是空的。

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-25 12:52:45

因为在selected中出现的对NULL的任何比较操作符都应该(而且确实)使行不被选中。

您应该使用空安全运算符<=>与包含NULL值和其他NOT NULL值的列进行比较,但是当两个操作数都是NULL时,<=>将返回1,因为NULL从来不被认为等于NULL

--这是空安全操作符有用的一个例子:

你有一张桌子:

代码语言:javascript
复制
Phones
----
Number
CountryCode (can be NULL) 

您希望选择所有来自西班牙的电话号码(国家代码34)。第一次尝试通常是:

代码语言:javascript
复制
SELECT Number FROM Phones WHERE CountryCode <> 34;

但是,您注意到没有列出没有国家代码(空值)的电话,您希望将它们包括在您的结果中,因为它们不是来自西班牙:

代码语言:javascript
复制
SELECT Number FROM Phones WHERE CountryCode <=> 34;
票数 2
EN

Stack Overflow用户

发布于 2014-05-25 13:00:48

代码语言:javascript
复制
select null <> null;

这里<>不是null safe operator。是Not equal operator。参考mysql的官方网站

Null safe operator<=>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23855477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档