所以,今天早上我问了一个
question,我没有正确的短语,所以我得到了很多回应,为什么NULL相比任何东西都会给NULL / FALSE.
我的实际问题是,数据库人员测试两列可能为NULL的不等式的时间是多久.我的问题与question完全相反.
要求如下,A和B为两列:
a)如果A和B都为NULL,则它们相等,返回FALSE
b)如果A和B都不为空,则返回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标准,这应该给你你想要的,但谁遵循标准.