7

Null が Null でさえないものと等しくない言語はいくつありますか?

4

7 に答える 7

15

nullは不明/未定義を意味するため、SQLでは(論理言語として)このようになります。

ただし、プログラミング言語(C ++やC#など)では、nullポインター/参照は特定の意味を持つ特定の値であり、何もありません。

2つのものは同等ですが、2つの未知のものは同等ではありません。混乱は、両方の概念に同じ名前(null)が使用されているという事実から生じています。

于 2008-09-16T18:15:01.713 に答える
4

VB6では、期待どおりではなく式Null = Nullが生成されます。これをブール値に割り当てようとするとランタイム エラーが発生しますが、" " の条件として使用すると、 のように動作します。さらに、 も生成 するので、次のようになります。NullTrueIf ... ThenFalseNull <> NullNull

VB6 では、これNullはそれ自体 (またはその他のもの) と同じでもなく、等しくないとも言えません!

関数を使用してテストすることになっていIsNull()ます。

VB6 には他にも特別な値があります。

  • Nothingオブジェクト参照用。Nothing = Nothingコンパイルエラーです。(「 」を使用して比較することになっていますis)
  • Missing与えられていないオプションのパラメータ。リテラル表現がないため、書くことさえできませんMissing = Missing。(テストはIsMissing(foo))
  • Empty初期化されていない変数の場合。functionありますが、これはそれ自体と等しいテストを行いますIsEmpty()
  • ...忘れていたら教えてください

VBに少しうんざりしたことを覚えています。

于 2008-09-26T05:54:17.703 に答える
3

MySQL にはヌルセーフ等価演算子 <=> があり、両側が等しい場合、または両側がヌルの場合に true を返します。MySQL ドキュメントを参照してください。

于 2008-09-16T18:20:30.797 に答える
3

オラクルはこの通り。

SELECT * FROM dual WHERE NULL=null;  --no rows returned
于 2008-09-16T18:12:15.950 に答える
2

Ruby をそのように動作させることができます:

class Null
 def self.==(other);false;end
end
n=Null
print "Null equals nothing" if n!=Null
于 2008-09-16T18:29:41.243 に答える
2

C# では、Nullable<bool> は論理演算子に関して興味深いプロパティを持っていますが、等価演算子はその言語の他の型と同じです (つまり、((bool?)null == (bool?)null) == true)。 .

短絡論理演算子の短絡動作を保持し、非短絡論理演算子との一貫性を保持するために、null 許容ブール値にはいくつかの興味深いプロパティがあります。例: true || ヌル == 真。false && null == false など。これは、ANSI SQLなどの他の 3 値論理言語とはまったく矛盾しています。

于 2008-09-26T06:36:00.787 に答える
0

SQL では、次のようにする必要があります。

WHERE column is NULL

それよりも

WHERE column = NULL
于 2009-11-26T19:02:31.313 に答える