首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL --为什么这要计算为真呢?

问SQL --为什么这要计算为真呢?
EN

Stack Overflow用户
提问于 2022-11-03 18:24:04
回答 1查看 39关注 0票数 0

请考虑以下SQL片段:

代码语言:javascript
复制
CREATE TABLE product 
(
    id integer, 
    stock_quantity integer
);

INSERT INTO product (id, stock_quantity) VALUES (1, NULL);
INSERT INTO product (id, stock_quantity) VALUES (2, NULL);

SELECT * 
FROM product 
WHERE (id, stock_quantity) NOT IN ((1, 2), (2, 9));

我不明白它为什么不选择任何东西。我在用Postgres。

我希望返回这两行,因为我希望(1,NULL)和(2,NULL)不在((1,2),(2,9))。

例如,如果我用0替换NULL,它确实返回两个结果。

为什么它被设计成这样?我遗漏了什么?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-11-03 18:56:49

将null视为缺少数据。例如,如果我们有一个列“出生日期”。

例如,假设一个数据库中有三个出生于1975年、1990年的人,而我们不知道第三个人的出生日期。我们知道第三个人确实出生了,但我们还不知道它的出生日期。

现在,如果一个查询搜索的人“不是1990年出生的”呢?只会返回第一个人。

第二个人出生于1990年,因此显然不能选择。

对于第三个人,我们不知道出生日期,所以我们不能说关于她的任何信息,而且查询也没有选择她。说得通吗?

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

https://stackoverflow.com/questions/74307892

复制
相关文章

相似问题

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