In how many languages is Null not equal to anything not even Null?
It's this way in SQL (as a logic language) because null means unknown/undefined.
However, in programming languages (like say, C++ or C#), a null pointer/reference is a specific value with a specific meaning -- nothing.
Two nothings are equivilent, but two unknowns are not. The confusion comes from the fact that the same name (null) is used for both concepts.
In VB6 the expression Null = Null
will produce Null
instead of True
as you would expect.
This will cause a runtime error if you try to assign it to a Boolean, however if you use it
as the condition of "If ... Then
" it will act like False
. Moreover Null <> Null
will also
produce Null
, so:
In VB6 you could say that Null
is neither equal to itself (or anything else), nor unequal!
You're supposed to test for it using the IsNull()
function.
VB6 also has other special values:
Nothing
for object references. Nothing = Nothing
is a compile error. (you're supposed to compare it using "is
")Missing
for optional parameters which haven't been given. It has no literal representation so you can't even write Missing = Missing
. (the test is IsMissing(foo)
)Empty
for uninitialized variables. This one does test equal to itself although there's also a function IsEmpty()
.I remember being a bit disgusted with VB.
Oracle is this way.
SELECT * FROM dual WHERE NULL=null; --no rows returned
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With