gpt4 book ai didi

sql - Not In 运算符消除表中的 NULL 值行

转载 作者:行者123 更新时间:2023-12-02 07:17:47 25 4
gpt4 key购买 nike

我想在 TABLEA 的 COLUMNA 中检索除 1,2,3,4,5 之外的所有值的行。

SELECT * FROM TABLEA WHERE COLUMNA NOT IN (1,2,3,4,5)

但这也消除了 COLUMNA 中具有 NULL 值的行。

我不想消除 NULL 值行,而是想在结果集中包含这些行。

或者,我可以尝试下面的相同查询

SELECT * FROM TABLEA WHERE COLUMNA NOT IN (1,2,3,4,5) OR COLUMNA  IS NULL.

但是我想知道,为什么要加这个OR条件呢?

最佳答案

为什么需要额外的?

NULL比较几乎总是导致 NULL ,而不是真或假。 WHERE子句会过滤掉所有非真值,因此它们会被过滤掉。

这就是 SQL 定义 NULL 的方式.为什么是NULL是这样定义的?

NULL在 SQL 中并不意味着“缺失”。意思是“未知”。因此,<unknown> not in (1, 2, 3, 4, 5) 的结果是“未知的”,因为该值可能是 1 也可能是 0。因此它会被过滤。

我还会注意到 SQL 标准包括 NULL -安全比较,IS NOT DISTINCT FROMIS DISTINCT FROM对应=<>分别。这些对待NULL作为“任何其他值”,所以两个 NULL值被认为是相等的。但是,NULL 没有结构。 -安全INNOT IN ,据我所知。

关于sql - Not In 运算符消除表中的 NULL 值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56394498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com