首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql在比较时返回NULL

问MySql在比较时返回NULL
EN

Stack Overflow用户
提问于 2015-04-18 09:19:08
回答 2查看 64关注 0票数 2

我遇到了一个问题。

谁能解释一下为什么

代码语言:javascript
复制
SELECT (null <> 'TEST STRING')

和

代码语言:javascript
复制
SELECT (null != 'TEST STRING')

返回NULL,而不是您所期望的布尔值true?

我不是在寻找解决方案,而是要解释为什么SQL会这样运行。

无论哪种语言返回布尔值,您都会期望有任何比较。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-18 09:25:29

不能用空运算符执行算术比较。因此,当您使用NULL (如<>和!= )执行标识符操作时,它给您的是NULL(一个无意义的值),而您的期望是布尔值。

可以参考MySQL来解释MySQL中NULL是如何工作的。

还请注意,在MySql NULL中是特殊的,它意味着unknown值,而在编程中它意味着undefined value。

票数 2
EN

Stack Overflow用户

发布于 2015-04-18 09:21:59

不能使用算术比较运算符(如=、<或<> )来测试NULL。https://dev.mysql.com/doc/refman/5.0/en/working-with-null.html

由于任何带有NULL的算术比较的结果也是NULL,因此无法从这些比较中获得任何有意义的结果。 在MySQL中,0或NULL表示false,其他任何东西都表示true。布尔操作的缺省真值为1。

您可以使用is null或is not null比较

代码语言:javascript
复制
mysql> select  'TEST STRING' is not null;
+---------------------------+
| 'TEST STRING' is not null |
+---------------------------+
|                         1 |
+---------------------------+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29715316

复制
相关文章

相似问题

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