在多少种语言中,Null 不等于任何不等于 Null 的东西?
cazlab
问问题
1813 次
7 回答
15
在 SQL(作为一种逻辑语言)中就是这种方式,因为 null 表示未知/未定义。
但是,在编程语言(例如 C++ 或 C#)中,空指针/引用是具有特定含义的特定值 - 没有。
两个虚无是等价的,但两个未知数不是。混淆来自于两个概念使用相同的名称(null)这一事实。
于 2008-09-16T18:15:01.713 回答
4
在 VB6 中,表达式Null = Null
将产生Null
而不是True
您所期望的。如果您尝试将其分配给布尔值,这将导致运行时错误,但是如果您将其用作 " If ... Then
" 的条件,它将表现得像False
. 而且Null <> Null
还会产生
,Null
所以:
在 VB6 中,您可以说它Null
既不等于自身(或其他任何东西),也不等于!
您应该使用该IsNull()
功能对其进行测试。
VB6 还有其他特殊值:
Nothing
用于对象引用。Nothing = Nothing
是编译错误。(您应该使用“is
”进行比较)Missing
对于尚未给出的可选参数。它没有文字表示,所以你甚至不能写Missing = Missing
. (测试是IsMissing(foo)
)Empty
对于未初始化的变量。尽管还有一个 function ,但这个确实 test equal to its ownIsEmpty()
。- ...如果我忘记了,请告诉我
我记得我对VB有点反感。
于 2008-09-26T05:54:17.703 回答
3
甲骨文就是这样。
SELECT * FROM dual WHERE NULL=null; --no rows returned
于 2008-09-16T18:12:15.950 回答
3
MySQL 有一个 null 安全的相等运算符 <=>,如果两边相等或两边都为 null,则返回 true。请参阅MySQL 文档。
于 2008-09-16T18:20:30.797 回答
2
你可以让红宝石这样工作:
class Null
def self.==(other);false;end
end
n=Null
print "Null equals nothing" if n!=Null
于 2008-09-16T18:29:41.243 回答
0
在 SQL 中,您必须执行以下操作:
WHERE column is NULL
而不是
WHERE column = NULL
于 2009-11-26T19:02:31.313 回答