首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL错误地忽略空值

问MySQL错误地忽略空值
EN

Stack Overflow用户
提问于 2021-09-13 19:27:25
回答 1查看 18关注 0票数 0

我正在尝试运行一个相当简单的查询,大致如下:

代码语言:javascript
复制
SELECT * FROM TABLE WHERE NOT COLUMN1 IN ('A','B')

我希望这会返回COLUMN1为NULL的行,但是,除了去掉A和B之外,它还删除了COLUMN1中的所有NULL值,我不明白其中的逻辑。非常新,所以如果有任何帮助,将不胜感激。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-09-13 19:38:23

NULL有一些意外的行为。可能最令人困惑的是,当它用作条件时,它的行为类似于FALSE,而当它用作条件的子表达式时,它的行为并不像它那样。包含NULL的大多数表达式的值都是NULL (最明显的例外是NULL IS NULL和NULL IS NOT NULL是TRUE和FALSE)。

因此,NULL IN ('A', 'B')的值是NULL,而不是FALSE。

NOT NULL的值是NULL,而不是TRUE。

因此,当COLUMN1为NULL时,NOT COLUMN1 IN ('A', 'B')的值为NULL,而不是TRUE或FALSE。

您必须显式地测试NULL。

代码语言:javascript
复制
WHERE column1 IS NULL OR column1 NOT IN ('A', 'B')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69168109

复制
相关文章

相似问题

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