gpt4 book ai didi

sql - 使用可以为空的列测试不平等

转载 作者:太空狗 更新时间:2023-10-30 01:42:49 25 4
gpt4 key购买 nike

所以,我问了一个question今天早上,我没有正确表达,所以我得到了很多关于为什么 NULL 与任何东西相比都会给出 NULL/FALSE 的回复。

我的实际问题是,数据库人员测试两个都可以为 NULL 的列的不等式的历史悠久的方式是什么。我的问题与这个 question 完全相反.

要求如下,A、B为两列:
a) 如果A和B都为NULL,则相等,返回FALSE
b) 如果 A 和 B 都不为 NULL,则返回 A<>B
c) 如果 A 或 B 为 NULL,则它们不相等,返回 TRUE

最佳答案

取决于列的数据类型和可能的值:

COALESCE(A, -1) <> COALESCE(B, -1)

诀窍是找到一个永远不会出现在您的数据中的值(这里我使用了 -1)。

另一种方式是:

(A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL)

这可能是一个问题,具体取决于您的特定 RDBMS 处理 NULL 的方式。按照 ANSI 标准,这应该给你你想要的,但无论如何谁都遵循标准。 :)

附言- 我还应该指出,使用 COALESCE 函数可能会使在比较列时使用索引无效。检查您的查询计划和查询性能,看看是否存在问题。

附言- 我刚刚注意到 OMG Ponies 提到 Informix 不支持 COALESCE。我相信这是一个 ANSI 标准函数,但是看看我上面关于标准所说的……

关于sql - 使用可以为空的列测试不平等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1835546/

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