私は SQL の概念に慣れていませんが、NULL 式を勉強しているときに、なぜ NULL が NULL と一致しないのか疑問に思っています。この概念を単純化する実際の例を教えてもらえますか?
9 に答える
NULL
値がないことを示します。A
SQL の設計者は、(値がわからない) と (値がわからない) が等しいかどうかを尋ねられたとき、答えは次のようにB
ならなければならないというのが理にかなっていると判断しました。UNKNOWN
ない。いずれかを決定するのに十分な情報がありません。
3 つの値を持つロジックTRUE
を読みたいと思うかもしれFALSE
ませUNKNOWN
ん。UNKNOWN
NULL
NULL
は不明な値です。したがって、判断する意味はほとんどありませんNULL == NULL
。それは、「この未知の値はその未知の値と等しいか」と尋ねるようなものです-手がかりはありません..
おそらくより良い説明については、null が null false と等しくない理由を参照してください
NULL は、フィールドにデータがないことです。
IS NULL で NULL 値を確認できます
IS NULLを参照してください
mysql> SELECT NULL IS NULL;
+--------------+
| NULL IS NULL |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
NULL が実際に NULL と等しい比較を行う必要がある場合は、特別なデフォルト値coalesce
を持つ一対のメソッドを使用できます。最も簡単な例は、NULL 可能な文字列列です。
coalesce(MiddleName,'')=coalesce(@MiddleName,'')
この比較は、@MiddleName 変数に null 値があり、MiddleName 列にも null 値がある場合に true を返します。もちろん、空文字列にもマッチします。それが問題である場合は、特別な値を次のようなばかげたものに変更できます
coalesce(MiddleName,'<NULL_DEFAULT>')=coalesce(@MiddleName,'<NULL_DEFAULT>')
実際には、NULLはUNKNOWN値を意味します。2つのUNKNOWN値を比較する方法です。
NULLに=を使用することはできません。代わりに、ISNULLを使用できます。