在多少种语言中,Null 不等于任何非 Null 的东西?
-
09-06-2019 - |
题
在多少种语言中,Null 不等于任何非 Null 的东西?
解决方案
SQL(作为一种逻辑语言)就是这样,因为 null 意味着未知/未定义。
然而,在编程语言(例如 C++ 或 C#)中,空指针/引用是具有特定含义的特定值 - 什么都没有。
两个无是等价的,但两个未知数则不然。造成混淆的原因是这两个概念使用了相同的名称(null)。
其他提示
在 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
对于未初始化的变量。尽管有 还 一个函数IsEmpty()
.- ...如果我忘记了,请告诉我
我记得我对VB有点反感。
甲骨文就是这样的。
SELECT * FROM dual WHERE NULL=null; --no rows returned
MySQL 有一个 null 安全的相等运算符 <=>,如果两边相等或两边都为 null,则返回 true。看 MySQL 文档.
你可以让 ruby 这样工作:
class Null
def self.==(other);false;end
end
n=Null
print "Null equals nothing" if n!=Null
在 SQL 中你必须做类似的事情:
WHERE column is NULL
而不是
WHERE column = NULL
不隶属于 StackOverflow