涉及NULL的关系表达式实际上再次产生NULL
编辑
在这里,<>代表任意的二进制运算符,NULL是sql占位符,value是任何值(NULL是不是一个值):
NULL <> value -> NULL
NULL <> NULL -> NULL
逻辑是:NULL表示“无值”或“未知值”,因此与任何实际值的任何比较都是没有意义的。
X = 42
假设您不知道拥有什么值(如果有),它是true,false还是未知X?sql表示未知。X = Y
假设两者都是未知的,则为真,假或未知?sql说结果未知。它对任何二元关系操作都是如此,这只是逻辑上的(即使模型中的NULL不在首位)。
sql还提供了两个一元后缀运算符IS NULL和IS NOT NULL,它们根据其操作数返回TRUE或FALSE。
NULL IS NULL -> TRUE
NULL IS NOT NULL -> FALSE